在Java中,我有以下for循环,我正在学习Python:
for (int index = last-1; index >= posn; index--)
对于大多数熟悉Python的人来说,我的问题很简单,而且可能很明显。我想在Python中编写'for'循环代码。我怎么能这样做?
我尝试执行以下操作:
for index in range(last-1, posn, -1):
我认为它应该是range(last-1, posn + 1, -1)
。我是对的吗?
我很感谢能够向我解释如何理解Python中的索引的人。
答案 0 :(得分:29)
python中的range函数具有以下语法:
range(start, end, step)
它具有与python列表相同的语法,其中start是包含但是end是独占的。
因此,如果您想从5到1进行计数,则可以使用range(5,0,-1)
,如果您想从last
计算到posn
,则可以使用range(last, posn - 1, -1)
。< / p>
答案 1 :(得分:11)
在python中,当你有一个iterable时,通常你会迭代而没有索引:
letters = 'abcdef' # or a list, tupple or other iterable
for l in letters:
print(l)
如果你需要以相反的顺序遍历iterable,你可以这样做:
for l in letters[::-1]:
print(l)
当您因任何原因需要索引时,可以使用enumerate
:
for i, l in enumerate(letters, start=1): #start is 0 by default
print(i,l)
您也可以按相反顺序枚举......
for i, l in enumerate(letters[::-1])
print(i,l)
另一个注意......
通常当我们遍历一个iterable时,我们会对每个元素应用相同的过程或函数。在这些情况下,最好使用map
:
如果我们需要对每封信件进行首映:
map(str.upper, letters)
或者获取每个字母的Unicode代码:
map(ord, letters)
答案 2 :(得分:4)
首先我建议您尝试使用打印并观察操作:
for i in range(0, 5, 1):
print i
结果:
0
1
2
3
4
您可以理解功能原理。
实际上,range
扫描范围是从0
到5-1
。
它等于0 <= i < 5
当你真正理解python中的for循环时,我认为我们回到业务的时候了。让我们关注您的问题。
你想在python中使用DECREMENT for循环。 我建议使用for循环教程。
for i in range(5, 0, -1):
print i
结果:
5
4
3
2
1
因此可以看出,它等于5 >= i > 0
你想在python中实现你的java代码:
for (int index = last-1; index >= posn; index--)
它应编码:
for i in range(last-1, posn-1, -1)
答案 3 :(得分:1)
如果你谷歌。 “倒数为循环python”你得到这些,这是非常准确的。
how to loop down in python list (countdown)
Loop backwards using indices in Python?
我建议在发布之前进行小搜索。此外,“学习Python艰难之路”是一个很好的起点。