1

我有下面的数据,这是一个列表。我想从每个列表中删除最后两个元素,只留下前三个元素。我试过了list.append()list.pop()但似乎无法让它们工作。我想不可能在 for 循环中从列表中删除元素,这是我之前尝试过的。解决此问题的最佳方法是什么?

data = [(datetime.datetime(2013, 11, 12, 19, 24, 50), u'78:E4:00:0C:50:DF', u' 8', u'Hon Hai Precision In', u''), (datetime.datetime(2013, 11, 12, 19, 24, 50), u'78:E4:00:0C:50:DF', u' 8', u'Hon Hai Precision In', u''), (datetime.datetime(2013, 11, 12, 19, 24, 48), u'9C:2A:70:69:81:42', u' 5', u'Hon Hai Precision In 12:', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'00:1E:4C:03:C0:66', u' 9', u'Hon Hai Precision In', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'20:C9:D0:C6:8F:15', u' 8', u'Apple', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'68:5D:43:90:C8:0B', u' 11', u'Intel Orate', u' MADEGOODS'), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'68:96:7B:C1:76:90', u' 15', u'Apple', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'68:96:7B:C1:76:90', u' 15', u'Apple', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'04:F7:E4:A0:E1:F8', u' 32', u'Apple', u''), (datetime.datetime(2013, 11, 12, 19, 24, 47), u'04:F7:E4:A0:E1:F8', u' 32', u'Apple', u'')]
4

2 回答 2

4

您可以使用列表推导并创建一个新列表列表,其中从每个子列表中删除 2 个元素

data = [x[:-2] for x in data]
于 2013-11-13T03:00:15.070 回答
2

正如@christian 所说,你有一个列表tuple,而不是list. 区别在这里很重要,因为tuple它是不可变的。你可以像这样转换listlist

data = map(list, data)

现在您可以在迭代每个项目时对其进行变异

for item in data:
     del item[-2:]

在你的情况下,列表理解更好,因为它同样适用于你listtuple

于 2013-11-13T03:16:35.457 回答