簡體   English   中英

使用索引迭代列表,但每個索引應該代表單個項目

[英]iterate over list with indexes but each index shoud represent single item

我想了解如何使用索引迭代列表,但每個索引應該代表單個項目(而不是項目中的字符)。 我有list = ['one', 'two', 'three', 'four']我想像這樣得到每個項目:

list[0] = 'one'
list[1] = 'two'
list[3] = 'four'

如何使用 python 做到這一點?

你應該避免像這樣索引列表,這不是一種pythonic的方式,而且看起來很丑,但如果你真的想要那么你可以這樣做:

l = ['one', 'two', 'three', 'four']
for i in range(len(l)):
 print(l[i])

# or
for i, v in enumerate(l):
 print(v, l[i])

enumerate() 在你需要跳過某個列表的某些索引什么的時候非常有用,但要保持 python 列表迭代方法

在回復評論(現已刪除)時,“我將如何最 Python 地迭代列表並僅根據索引號和附近元素的值等條件包含某些元素?”:

要跳過某些索引,我會使用上面的枚舉,例如:

l = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
for i, v in enumerate(l):
 if i > 1 and (i % 3) == 0:
  print(v, l[i])

迭代一個列表以便能夠與附近的元素進行比較是一種情況,它必須看起來有點混亂,當然,所以要么使用上面的枚舉,要么你可以使用 zip 和切片,

l = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
for i, v in enumerate(l):
 if i > 0 and l[i - 1][0] in v:
  print(i, v)

# slice method
for x, y in zip(l, l[1:]):
 if x[0] in y:
  print(y)

# or if you still need the index you can combine enumerate and zip like this
for i, (x, y) in enumerate(zip(l, l[1:])):
 if x[0] in y:
  print(i, y)

請注意,在切片方法中,“x”從元素 0 開始,“y”從元素 1 開始,因此 enumerate() 和 enumerate(zip()) 方法打印的索引不匹配,您需要將 1 添加到我在后者

暫無
暫無

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

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