2013-06-18 56 views
4

我知道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 

回答

6
for i in 'cdefg': 

...

for i in (chr(x) for x in range(ord('c'), ord('h'))): 
+0

你在第二循環:) –

+1

@SkamahOne意味着'爲X ...':不,我真的沒有。 –

+2

我認爲'map(chr,range(...))'是完全適應的,在這裏:代碼會更短,嵌套的括號更少......當然,這會在Python 2中創建一個列表,但我想這個速度是這不重要。 – EOL

0

這個怎麼樣?

for code in range(ord('c'), ord('h')): 
    print chr(code) 
5

這也適用,這樣它很明確的你正在使用什麼:

import string 
s = string.ascii_lowercase 
for i in s[s.index('c'):s.index('h')]: 
    print i 
8

我認爲這是更好的補充1ord('g')比使用ord('h')

for code in range(ord('c'), ord('g') + 1): 
    print chr(code) 

的原因是什麼如果你想去'z',你需要知道'z'後面的內容。我敢打賭,你可以輸入+ 1的速度比查看它快。

+1

+1:好點! – EOL

2

沒有理由不使用:

>>> 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