回答
您可以使用ord()
的字母轉換成字符序和背部:
def char_range(start, end, step=1):
for char in range(ord(start), ord(end), step):
yield chr(char)
這似乎只是正常工作:
>>> ''.join(char_range('a', 'z'))
'abcdefghijklmnopqrstuvwxy'
中有字母範圍內無建的,但你可以寫一個:
def letter_range(start, stop):
for c in xrange(ord(start), ord(stop)):
yield chr(c)
for x in letter_range('a', 'h'):
print x,
打印:
a b c d e f g
喜歡的東西:
for x in [chr(i) for i in range(ord('a'),ord('h')]
(或者:
for x in map(chr, range(*map(ord,['a', 'h'])))
)
請注意,這不包括最後一個字母,所以如果你想要做整個字母表,你會這樣做: [chr(i)for我在範圍內(ord('a'),ord('z')+ 1] – seddonym 2013-05-22 14:17:22
import string
def letter_range(f,l,al = string.ascii_lowercase):
for x in al[al.index(f):al.index(l)]:
yield x
print ' '.join(letter_range('a','h'))
結果
a b c d e f g
這容易,我至少讀/瞭解(你可以輕鬆地定製的字母都包括在內,以及以什麼順序):
letters = 'abcdefghijklmnopqrstuvwxyz'
for each in letters:
print each
result:
a
b
c
...
z
...新的網站,我該如何使代碼塊正確顯示?(與我上面提到的相反) – Joey 2015-08-18 01:52:26
選擇代碼並點擊「{}」按鈕,或者縮進每個代碼行至少四個空格 – user3288829 2015-08-18 01:57:28
埃馬努埃萊的解決方案是偉大的,因爲只要一個人只要求一系列單個角色,我承認這是最初的提問者提出的。還有解決方案可以生成所有多字符組合:How to generate a range of strings from aa... to zz。但是我懷疑想要像範圍函數這樣的字符的人可能希望能夠處理從「y」到「af」(從「z」滾動到「aa」)的任意範圍。所以這裏是一個更通用的解決方案,它包括指定範圍的最後一個成員或其長度的能力。的
def strange(start, end_or_len, sequence='ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
"""Create a generator of a range of 'sequential' strings from
start to end_or_len if end_or_len is a string or containing
end_or_len entries if end_or_len is an integer.
>>> list(strange('D', 'F'))
['D', 'E', 'F']
>>> list(strange('Y', 'AB'))
['Y', 'Z', 'AA', 'AB']
>>> list(strange('Y', 4))
['Y', 'Z', 'AA', 'AB']
>>> list(strange('A', 'BAA', sequence='AB'))
['A', 'B', 'AA', 'AB', 'BA', 'BB', 'AAA', 'AAB', 'ABA', 'ABB', 'BAA']
>>> list(strange('A', 11, sequence='AB'))
['A', 'B', 'AA', 'AB', 'BA', 'BB', 'AAA', 'AAB', 'ABA', 'ABB', 'BAA']
"""
seq_len = len(sequence)
start_int_list = [sequence.find(c) for c in start]
if isinstance(end_or_len, int):
inclusive = True
end_int_list = list(start_int_list)
i = len(end_int_list) - 1
end_int_list[i] += end_or_len - 1
while end_int_list[i] >= seq_len:
j = end_int_list[i] // seq_len
end_int_list[i] = end_int_list[i] % seq_len
if i == 0:
end_int_list.insert(0, j-1)
else:
i -= 1
end_int_list[i] += j
else:
end_int_list = [sequence.find(c) for c in end_or_len]
while len(start_int_list) < len(end_int_list) or start_int_list <= end_int_list:
yield ''.join([sequence[i] for i in start_int_list])
i = len(start_int_list)-1
start_int_list[i] += 1
while start_int_list[i] >= seq_len:
start_int_list[i] = 0
if i == 0:
start_int_list.insert(0,0)
else:
i -= 1
start_int_list[i] += 1
if __name__ =='__main__':
import doctest
doctest.testmod()
- 1. 是否可以組合兩個範圍來創建字典?
- 2. 是否有可能在Scala中創建一個「受限範圍」?
- 3. 是否可以創建一個選擇另一個母版頁的母版頁?
- 4. 是否可以創建一個使用VBA鎖定範圍的公式?
- 5. 是否可以在Scilab中使用csvRead來創建可變範圍和列5.5.2
- 6. VB.NET是否可以創建具有新範圍的嵌入塊?
- 7. 是否可以繞過add_subdirectory()命令的新範圍創建?
- 8. 是否可以將數字限制在一定範圍內
- 9. 在postgres中創建一個範圍
- 10. 是否有一個角指令,可以限制範圍在DOM
- 11. 創建一個空範圍?
- 12. 在Python中創建小時數範圍
- 13. 是否可以在MySQL中識別唯一的範圍?
- 14. 是否可以從函數(Python)中導入到全局範圍?
- 15. MySQL選擇一個字母的範圍
- 16. 是否有一個爲範圍( '一個', 'Z')的非英文字母
- 17. ng-incude是否創建一個新的子範圍?
- 18. 你可以根據範圍創建一個分組嗎?
- 19. 字母數字範圍檢查器 - B3是否在B1:B10
- 20. 如何使用Python來檢查字符串的第一個字母是否在一定範圍內?
- 21. 在Excel中,你可以檢查一個範圍是否是整行
- 22. 在python中創建一個填充字母表的字符集
- 23. 創建字節範圍以匹配以特定字母開頭的密鑰
- 24. 是否可以構建動態可鏈接範圍?
- 25. 是否可以爲ValidationSummaryControl設置一個範圍?
- 26. 是否可以返回在函數範圍內創建的引用?
- 27. 是否std :: mutex創建一個圍欄?
- 28. 在Swift中快速創建一個數字範圍的方法
- 29. 在sql子查詢中創建一個數字範圍
- 30. 值是否在一個範圍內
可能DUP http://stackoverflow.com/questions/7001144/range-over-character-in-python和http://stackoverflow.com/questions/3190122/python-how-to-print -range-az(其中每個都有很多很好的答案) – fantabolous 2015-02-05 08:37:09