我知道for循環:將與字母代替數字環路
for i range(2, 6):
print i
給出了這樣的輸出:
2
3
4
5
可我也有字母做到這一點不知? 例如:
# an example for what i'm looking for
for i in range(c, h):
print i
c
d
f
g
我知道for循環:將與字母代替數字環路
for i range(2, 6):
print i
給出了這樣的輸出:
2
3
4
5
可我也有字母做到這一點不知? 例如:
# an example for what i'm looking for
for i in range(c, h):
print i
c
d
f
g
for i in 'cdefg':
...
for i in (chr(x) for x in range(ord('c'), ord('h'))):
這個怎麼樣?
for code in range(ord('c'), ord('h')):
print chr(code)
這也適用,這樣它很明確的你正在使用什麼:
import string
s = string.ascii_lowercase
for i in s[s.index('c'):s.index('h')]:
print i
我認爲這是更好的補充1
到ord('g')
比使用ord('h')
for code in range(ord('c'), ord('g') + 1):
print chr(code)
的原因是什麼如果你想去'z',你需要知道'z'後面的內容。我敢打賭,你可以輸入+ 1
的速度比查看它快。
+1:好點! – EOL
沒有理由不使用:
>>> for char in "cdefg":
... print(char)
c
d
e
f
g
即使你不是一個程序員,你可以找出循環做什麼,它基本上是英語。 它也乾淨多了,它的短,和最好的部分是,它比chr(ord())
解決方案快6倍:
>>> import timeit
>>> timeit.timeit("for i in 'abcdefg': x = i")
0.27417739599968627
>>> timeit.timeit("for i in range(ord('a'), ord('g') + 1): x = chr(i)")
1.7386019650002709
你在第二循環:) –
@SkamahOne意味着'爲X ...':不,我真的沒有。 –
我認爲'map(chr,range(...))'是完全適應的,在這裏:代碼會更短,嵌套的括號更少......當然,這會在Python 2中創建一個列表,但我想這個速度是這不重要。 – EOL