2017-05-15 13 views
0
for i in range(65, 123) 

92から96を省略して65から91まで、97から123の範囲(大文字と小文字のASCII)にしたいが、1つの開始値と1つの停止値しか入力できません。それらを省略したり、異なる開始値と終了値を設定する方法はありますか?python 3でrange()に開始点と終了点を2つ設定する方法はありますか?

あなたが チェーンitertools.chainを使用して 2つの範囲のオブジェクトができ
+0

@KevinW。それは重複していますが、その質問はPython2について明示的ですが、これはPython 3に関するものです。少なくとも、戻り値と関数名は異なります。 –

答えて

4

:あなたはitertools.chainを使用することができます

>>> from itertools import chain 
>>> chain(range(5), range(9, 14)) 
<itertools.chain object at 0x101a8e588> 
>>> list(_) 
[0, 1, 2, 3, 4, 9, 10, 11, 12, 13] 

from itertools import chain 

for i in chain(range(65, 91), range(97, 123)): 
    ... 
+0

これは素晴らしい仕事でした。ありがとうございました。 – Manuel

3

import itertools 
for i in itertools.chain(range(65, 92), range(97, 123)): 
0

まず、あなたが「マジックナンバーを使用しないでくださいあなたのコードで。 65が 'A'のASCIIコードであれば、そう言う:ord('A')。第二に、あなたは1つのリストに二つのリストを結合し、それを反復処理することができます。

for i in list(range(ord('A'),ord('Z')+1)) + list(range(ord('a'),ord('z')+1)): 
1
list(range(65,92)) + list(range(97,124)) 

意志出力:

[65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123] 
関連する問題