下面列出了一个代码,它接受一个列表,然后返回一个新的列表,并且每秒删除一个值
有人能给我解释一下这个代码是怎么工作的吗?我知道枚举函数将把列表放入元组列表中。示例:[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的val吗
代码:
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]
这不是一个“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]
关于Q1,这只是一个list comprehension syntax。 在函数中,它创建并返回一个列表。 它可以重写为常规for循环,例如
在Python中,列表理解是做同样事情的更自然的方式。
答覆第二季及;第三个问题是“是”和“是”
我认为如果它看起来像这样,函数会更容易理解
相关问题 更多 >
编程相关推荐