我有下面的数据,这是一个列表列表。我想从每个列表中删除最后两个元素,只留下前三个元素。我尝试了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'')]
答案 0 :(得分:4)
您可以使用列表推导并创建一个新列表,其中包含从每个子列表中删除的2个元素
data = [x[:-2] for x in data]
答案 1 :(得分:2)
正如@christian所说,你有一个tuple
的列表,而不是list
。这里的区别很重要,因为tuple
是不可变的。您可以像这样转换为list
list
data = map(list, data)
现在,您可以在迭代时改变每个项目
for item in data:
del item[-2:]
在您的情况下,列表理解更好,因为它同样适用于list
tuple
。