有时候,记住默认情况下排除 for 循环的上限让我有点困惑。有什么办法让它具有包容性吗?
十分之九,如果您正在编写一个 Python for
循环来迭代一系列数字,然后使用这些数字索引到列表或其他容器中,那么您就是这样做的错误的。换句话说,而不是这样做:
for i in range(len(container)):
print container[i]
你应该这样做:
for item in container:
print item
但是等等!你反对。如果因为要以某种方式修改项目而需要索引怎么办?执行此操作的 Pythonic 方法是使用 enumerate()
内置函数。
for i, item in enumerate(container):
print item
container[i] += 1
如果你不介意复制你的列表,那么列表理解通常是最好的选择:
container = [item + 1 for item in container]
或者如果您需要就地修改列表,试试这个,它结合了切片赋值(替换现有列表)和生成器表达式(延迟修改项目):
container[:] = (item + 1 for item in container)
我是一名优秀的程序员,十分优秀!