我尝试从列表中删除删除项目,然后使其等同于另一个变量,同时仍保留原始列表。
代码:
print (len(desc1))
desc2 = []
for tuple in desc1:
for line in tuple:
if line.endswith(':'):
desc2 = desc1.remove(tuple)
print (len(desc1))
print (desc2)
输出:
550
200
None
我希望输出是什么:
550
550
200
我必须使用什么才能实现这一目标?
答案 0 :(得分:1)
首先复制列表。
desc2 = desc1[:] # shallow copy
for tuple in desc2:
for line in tuple:
if line.endswith(":"):
desc2.remove(tuple) # don't assign here
请注意,无论如何这都是一个坏主意,因为您正在重复列表(删除成员),因为您正在迭代它。此外,您使用list.remove
数百次,而且速度并不快。而是考虑使用列表理解。
desc2 = [tup for tup in desc1 if not any(line.endswith(":") for line in tup)]
# or
desc2 = filter(lambda t: not any(line.endswith(":") for line in t), desc1)