2010-06-16 36 views
0

我有這樣幾個列表:使用循環修剪名單

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

我想用一個循環,而不是作爲下面做修剪所有的人:

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

我試過,但弄糊塗了通過價值傳遞或通過參考基礎知識,也看到其他問題,但沒有幫助。

感謝

+0

什麼[-2:]錯了? – 2010-06-16 16:38:38

回答

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

這從每個列表中的最後兩個元素。如果你只想刪除所有,但最後兩個元素,這樣做:

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

有沒有必要擔心在這裏引用; for循環遍歷的列表包含對a,bc的引用,並且通過刪除列表片段來對每個列表進行就地變體。

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

在Python 3.x中,這會將迭代器存儲在'x'而不是另一個列表中(Python 3.x中的'map'返回迭代器)。 – 2010-06-16 16:40:41

1

刪除不需要的項目從現有列表,使用循環:

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

或者創建僅包含正確項新的列表,使用列表理解:

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