【发布时间】:2018-08-06 23:28:59
【问题描述】:
我从range(len(list)) or enumerate(list)? 读到,使用range(len(s)) 不是编写Python 的好方法。如果我们不需要循环 len(s) 次而是例如 len(s)//3 次或 len(s)-5 次,那么如何以另一种方式编写 for 循环?是否可以将这些循环转换为使用enumerate?
例如,我有一个项目,我有一个包含 3n 个元素的列表 's[0], s[1],...,s[3n-1]' 我需要在 nx3 表中打印它们.我写了类似的代码
for i in range(len(s)//3):
row = str(s[3*i]) + " " + str(s[3*i+1]) + " " + str(s[3*i+2])
print(row)
【问题讨论】:
-
你能举一个更具体的例子来说明你想要做什么吗?
-
不完全重复,因为这个问题还询问关于迭代列表的部分。
-
“使用
range(len(s))不是编写 Python 的好方法”不确定您从那个问题或其他问题中得到这个想法的地方。 Python 完全没问题。不建议的是迭代索引,然后在循环中获取元素;那么enumerate是首选。 -
@user2219896 是的,所以关键是您通常不想在要迭代 元素时使用
range(len(l))一个列表(尽管可能仍然存在有意义的情况)。但是如果你只想遍历一个数字序列,不管是len(l)还是其他任何数字,都是正确的做法(事实上,这正是range/xrange的目的)。在这种情况下,Imo 使用enumerate并忽略列表元素是不必要的,最重要的是,您不使用列表元素这一事实稍微不那么明确。
标签: python python-3.x