Python foreach等价

时间:2016-10-31 16:34:00

标签: python foreach

我正在深入研究Python,我对foreach迭代有疑问。我是Python的新手,我在C#方面有一些经验。所以我想知道,如果我的集合中的所有项目都有Python中的等效函数用于迭代,例如

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

或类似的东西。

8 个答案:

答案 0 :(得分:187)

不确定。一个for循环。

for f in pets:
    print f

答案 1 :(得分:23)

像这样:

for pet in pets :
  print(pet)

事实上,Python 已经预先设置了样式for循环。

答案 2 :(得分:7)

观察这个也很有意思

要迭代序列的索引,您可以合并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

答案 3 :(得分:2)

虽然上面的答案是有效的,但是如果您要遍历字典{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

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

答案 4 :(得分:1)

有关更新的答案,您可以在Python中轻松构建const filterArray = ['a', 'b'] const objectToBeFilter = { a: { ab: 'ab', ac: 'ac', ad: 'ad' }, b: { bb: 'bb', bc: 'bc', bd: 'bd' }, c: { cb: 'cb', cc: 'cc', cd: 'cd' } } const resultWantToGet = filterArray.reduce((c, v) => { if (objectToBeFilter[v]) c[v] = objectToBeFilter[v]; //Check if the key exist in objectToBeFilter, if it does, assign to the accumulator. return c; }, {}) console.log(resultWantToGet);函数:

forEach

您还可以将其调整为def forEach(list, function) for i,v in enumerate(list)) function(v, i, list) mapreduce,以及您想引入的其他语言或其他语言的任何其他数组函数。 For循环足够快,但是样板比filter或其他功能长。您还可以扩展列表以使用指向类的本地指针来扩展这些功能,以便您也可以直接在列表上调用它们。

答案 5 :(得分:1)

对于字典,我们可以使用for循环遍历indexkeyvalue

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##

答案 6 :(得分:1)

不幸的是,foreach 构造不是集合的固有结构,而是集合的外部结构。结果是双重的:

  • 它不能被链接
  • 在惯用的 python 中需要两行代码。

Python 不直接支持真正的 foreach 集合。一个例子是

myList.foreach( a => print(a)).map( lambda x:  x*2)

但是python不支持。各种第三方库提供了对 Python 中此功能和其他缺失功能特性的部分修复,其中包括我帮助创作的库:参见 https://pypi.org/project/infixpy/

答案 7 :(得分:0)

这对我有用:

def smallest_missing_positive_integer(A):
A.sort()
N = len(A)

now = A[0]
for i in range(1, N, 1):
  next = A[i]
  
  #check if there is no gap between 2 numbers and if positive
  # "now + 1" is the "gap"
  if (next > now + 1):
    if now + 1 > 0:
      return now + 1 #return the gap
  now = next
    
return max(1, A[N-1] + 1) #if there is no positive number returns 1, otherwise the end of A+1