使用循环修剪列表

时间:2010-06-16 16:34:28

标签: python list

我的名单很少:

a = [1, 2, 3, 4, 5]
b = [4, 6, 5, 9, 2]
c = [4, 7, 9, 1, 2]

我想使用循环修剪所有这些,而不是如下所示:

a[-2:]
b[-2:]
c[-2:]

我尝试过,但是对于传递价值感到困惑,或者通过参考基本原则进行了调整,也查看了其他问题,但没有帮助。

由于

3 个答案:

答案 0 :(得分:4)

for l in [a, b, c]:
    del l[-2:]

这将从每个列表中删除最后两个元素。如果您只想删除除最后两个元素之外的所有元素,请执行以下操作:

for l in [a, b, c]:
    del l[:-2]

这里没有必要担心引用; for循环迭代的列表包含对abc的引用,并且每个列表都通过删除列表切片而就地变异。

答案 1 :(得分:1)

x = [a, b, c]
x = map(lambda lst: lst[-2:], x)   

答案 2 :(得分:1)

使用循环从现有列表中删除不需要的项目:

for list in [a, b, c]:
   del a[:-2]

或者,使用列表推导创建仅包含正确项目的新列表:

(a, b, c) = [x[-2:] for x in (a, b, c)]