Python 枚举
Python Enumerate
我有下面列出的代码,它接受一个列表,然后 return 一个新列表,每隔一个值被删除。
有人可以向我解释这段代码是如何工作的吗?我知道枚举函数会将列表放入元组列表中。示例:[1,2,3,4,5] 将转到 (0,1) (1,2) (2,3) (3,4) (4,5)
问题1:为什么代码中"val"在return语句中的for循环之前列出,然后在for循环之后第二次列出?
问题 2:单词 "for" 之后的 i 是枚举结果元组的索引 0 吗?
问题 3:单词 "for" 之后是枚举结果元组的索引 1 的值吗?
代码:
def remove_every_other(lst):
return [val for i,val in enumerate(lst) if i % 2 == 0]
print(remove_every_other([1,2,3,4,5])) # [1,3,5]
关于Q1,这只是一个list comprehension syntax。
在您的函数中,它会创建一个列表并 returns 它。
它可以重写为常规的 for 循环,例如
def remove_every_other(lst):
result = []
for i, val in enumerate(lst):
if i % 2 == 0:
result.append(val)
return result
在 Python 中,列表理解是做同样事情的更自然的方式。
Q2&Q3的答案是肯定的。
我认为如果函数看起来像这样会更容易理解
def remove_every_other(lst):
return [i for i in lst if i % 2 != 0]
print(remove_every_other([1,2,3,4,5])) # [1,3,5]
这不是 "for" 循环,这是一个列表理解语法。 [val for i,val in enumerate(lst)]
会逐个元组检查 enumerate(lst)
产生的结果,然后只将 val
-s 放入新列表中。他们都。因此,这将简单地重新创建相同的列表。添加条件 [val for i,val in enumerate(lst) if i % 2 == 0]
将使其仅采用条件为真的值,因此仅采用索引可被 2 整除的值。正如其他人已经提到的,阅读列表理解将非常有帮助。
就是说,您可以用更简单的形式做同样的事情。具体来说,就是 lst[::2]
.
我有下面列出的代码,它接受一个列表,然后 return 一个新列表,每隔一个值被删除。
有人可以向我解释这段代码是如何工作的吗?我知道枚举函数会将列表放入元组列表中。示例:[1,2,3,4,5] 将转到 (0,1) (1,2) (2,3) (3,4) (4,5)
问题1:为什么代码中"val"在return语句中的for循环之前列出,然后在for循环之后第二次列出?
问题 2:单词 "for" 之后的 i 是枚举结果元组的索引 0 吗?
问题 3:单词 "for" 之后是枚举结果元组的索引 1 的值吗?
代码:
def remove_every_other(lst):
return [val for i,val in enumerate(lst) if i % 2 == 0]
print(remove_every_other([1,2,3,4,5])) # [1,3,5]
关于Q1,这只是一个list comprehension syntax。 在您的函数中,它会创建一个列表并 returns 它。 它可以重写为常规的 for 循环,例如
def remove_every_other(lst):
result = []
for i, val in enumerate(lst):
if i % 2 == 0:
result.append(val)
return result
在 Python 中,列表理解是做同样事情的更自然的方式。
Q2&Q3的答案是肯定的。
我认为如果函数看起来像这样会更容易理解
def remove_every_other(lst):
return [i for i in lst if i % 2 != 0]
print(remove_every_other([1,2,3,4,5])) # [1,3,5]
这不是 "for" 循环,这是一个列表理解语法。 [val for i,val in enumerate(lst)]
会逐个元组检查 enumerate(lst)
产生的结果,然后只将 val
-s 放入新列表中。他们都。因此,这将简单地重新创建相同的列表。添加条件 [val for i,val in enumerate(lst) if i % 2 == 0]
将使其仅采用条件为真的值,因此仅采用索引可被 2 整除的值。正如其他人已经提到的,阅读列表理解将非常有帮助。
就是说,您可以用更简单的形式做同样的事情。具体来说,就是 lst[::2]
.