Java转Python转换
我想知道怎么把这个用Python写得更好:for (int i = 0; i < itemsCount; i++)
有什么想法吗?
提前谢谢你!
4 个回答
1
这里是相关文档的部分内容(顺便提一下,这是我在谷歌搜索“python 循环”时找到的第一个结果)。
在 Python 2.x 中
for i in xrange(itemsCount):
# rtfm
在 Python 3 中
for i in range(itemsCount):
# rtfm
注意: 在 Python 2.x 中,普通的 range
也可以使用,但效率不高,因为它会在内存中生成一个完整的列表,这在构建循环结构时其实是没必要的。
注意2: 如果你只打算用 i
来访问某个容器里的元素,直接遍历这个容器会更符合 Python 的风格,比如可以写成 for item in my_list:
。如果你确实需要索引,通常的做法是用 for i,v in enumerate(my_list):
来遍历。
1
一个Python中相应的循环:
for i in range(0,itemsCount):
3
如果你在遍历某个容器里的项目,就直接遍历这个容器,不要用索引,除非你真的需要。
正确的做法:
slots = [1, 2, 3, 7]
for slot in slots:
print cards[slot]
错误的做法(或者说是“在Python中写C/C++/Java/C#/其他语言的风格”):
slots = [1, 2, 3, 7]
for i in range(len(slots)):
print cards[slots[i]]
如果你需要索引来做其他事情(比如你要修改这个容器),那么Python的推荐做法是用 enumerate()
:
for i, slot in enumerate(slots):
print cards[slot]
slots[i] += 1