我正试图弄清楚如何手动枚举一个列表,但是由于我不知道如何拆分data
列表,我陷入了困境。这是我目前掌握的密码。。在
enumerated_list = []
data = [5, 10, 15]
for x in (data):
print(x)
for i in range(len(data)):
enumerate_rule = (i, x)
enumerated_list.append(enumerate_rule)
print(enumerated_list)
打印出来。。在
^{pr2}$当我想要的是[(0, 5), (1, 15), (2, 15)]
。我该怎么做?在
由于
x
遍历`data中的每个元素,因此在以下末尾:
^{pr2}$x
将是最后一个元素。这就是为什么要将15
作为每个元组中的第二个元素:您只需要一个循环:
使用the ^{} built-in :
原始代码的错误在于您在循环中使用了
x
,但是,x
在该循环中没有改变,它只是从您打印值的前一个循环中留在那里。在然而,这种方法是不好的。修复它需要按索引循环,而Python并不是这样设计的-它很慢而且很难阅读。相反,我们按值循环。内置的
enumerate()
可以为我们完成这项工作,因为这是一项相当常见的任务。在如果您真的不想使用
^{pr2}$enumerate()
(这根本没有意义,但可能作为一种任意的限制,试图教您一些其他的东西),那么还有更好的方法:这里我们使用^{} ,这是一个python函数,用于同时循环两组数据。这将从每个iterable返回第一个值的元组,然后从每个iterable返回第二个值,等等。。。当与^{} 结合时,这就给了我们想要的结果,它在tin上做了它所说的。在
如果你真的觉得需要手动构建一个列表,那么更像Python的方式来做一些不太和谐的事情:
不过,请注意,一般情况下,人们会使用list comprehension来构建这样的列表—在这种情况下,一旦这样做了,使用前面的方法之一会更有意义。这种单子的制作效率低下,而且很难阅读。在
enumerate_rule = (i, x)
是问题所在。每次都使用相同的值(x
,列表中的最后一项)。将其更改为enumerate_rule = (i, data[i])
。在相关问题 更多 >
编程相关推荐