簡體   English   中英

在 Python 中循環遍歷列表

[英]Looping over a list in Python

我有一個包含子列表的列表。 我想打印長度等於 3 的所有子列表。

我在 python 中執行以下操作:

for x in values[:]:
    if len(x) == 3:
        print(x)

values是原始列表。 上面的代碼是否為x每個值打印每個長度等於 3 的子列表? 我想只顯示一次length == 3的子列表。

問題已經解決了。 問題出在 Eclipse 編輯器上。 我不明白原因,但是當我運行循環時它只顯示我列表的一半。

我必須在 Eclipse 中更改任何設置嗎?

x in mylist中的x in mylist[:]x in mylist[:]更好且更具可讀性x in mylist[:]並且您的len(x)應該等於3

>>> mylist = [[1,2,3],[4,5,6,7],[8,9,10]]
>>> for x in mylist:
...      if len(x)==3:
...        print x
...
[1, 2, 3]
[8, 9, 10]

或者如果你需要更多的 Pythonic 使用列表理解

>>> [x for x in mylist if len(x)==3]
[[1, 2, 3], [8, 9, 10]]
>>>

這是我一直在尋找的解決方案。 如果您想創建包含 List1 中數字元素差異的 List2。

list1 = [12, 15, 22, 54, 21, 68, 9, 73, 81, 34, 45]
list2 = []
for i in range(1, len(list1)):
  change = list1[i] - list1[i-1]
  list2.append(change)

請注意,雖然len(list1)為 11(元素),但len(list2)將只有 10 個元素,因為我們從 list1 中索引為 1 的元素而不是 list1 中索引為 0 的元素開始 for 循環

您也可以使用for x in values而不是for x in values[:] ; 后者制作了不必要的副本。 此外,當然,該代碼檢查長度為 2 而不是 3 ...

該代碼只打印x每個值一個項目 - 並且x正在迭代values的元素,這些元素是子列表。 所以它只會打印每個子列表一次。

改為這樣做:

values = [[1,2,3],[4,5]]
for x in values:
    if len(x) == 3:
       print(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM