相当于Python foreach


189

我正在研究Python,并且有一个关于foreach迭代的问题。我是Python的新手,我在C#中有一些经验。所以我想知道,Python中是否有一些等效函数可用于集合中所有项目的迭代,例如

pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]

或类似的东西。


Answers:


292

当然。一个for循环。

for f in pets:
    print f

如果我也必须知道索引/键怎么办?
烛台

24
然后,您将使用枚举。 for k,v in enumerate(pets):
Hannu

30

像这样:

for pet in pets :
  print(pet)

实际上,Python 具有foreach样式for循环。


12

观察这一点也很有趣

要遍历序列的索引,可以结合使用range()len()如下所示:

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
  print(i, a[i])

输出

0 Mary
1 had
2 a
3 little
4 lamb

编辑#1:替代方法:

在序列中循环时,可以使用enumerate()函数同时检索位置索引和相应的值。

for i, v in enumerate(['tic', 'tac', 'toe']):
  print(i, v)

输出

0 tic
1 tac
2 toe

4

对于更新的答案,您可以forEach轻松地在Python中构建一个函数:

def forEach(list, function)
  for i,v in enumerate(list))
    function(v, i, list)

你也可以适应这mapreducefilter,并从其他语言或任何其他优先的阵列功能,你想带过来。for循环足够快,但是模板要比forEach其他功能更长。您还可以扩展列表以使用指向类的局部指针来具有这些功能,因此也可以直接在列表上调用它们。


1
你可以包括用法吗?
ScottyBlades

3

尽管上面的答案是有效的,但是如果您要遍历字典{key:value},那么这是我喜欢使用的方法:

for key, value in Dictionary.items():
    print(key, value)

因此,如果我想对字典中的所有键和值进行字符串化处理,可以这样做:

stringified_dictionary = {}
for key, value in Dictionary.items():
    stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary

这样可以避免在应用这种类型的迭代时出现任何突变问题,而这可能会导致我的经验(有时)不稳定。


更具可读性的替代方法是对copy字典的a进行迭代,因此您可以在迭代过程中操作字典(尽管您的副本将是修改之前的所有键和值)-例如for key, value in Dictionary.copy().items()
Marc Maxmeister,

1

对于一个字典,我们可以通过使用一个for循环迭代indexkey并且value

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.