2016-06-07 99 views
3

結合比方說我想要打印的0〜25和75〜100 現在我有:如何兩個for循環

for x in range(0, 26): 
    print(x) 
for x in range(75, 101): 
    print(x) 

有沒有辦法將這些組合成一個單一的for循環導致:

print(x) 

東西線沿線的:

for x in range(0, 26) and range(75, 101): 
    print(x) 

回答

6

您需要itertools.chain()

請返回從第一個迭代直到它耗盡元素的迭代器,然後進入下一個迭代,直到所有的迭代都耗盡。

from itertools import chain 

for x in chain(range(0, 26), range(75, 101)): 
    print(x) 

同時適用於Python 2和3

+1

只需添加到@alecxe答案:如果你有一個列表的列表(或任何可迭代),可以使用from_iterable。 即:** list_ = [iter1,iter2,...] **然後:** for x in chain.from_iterable(list _)** 一個很好的用法是將一列列表空置爲空。 – Hamlett

0
for x in list(range(0, 26)) + list(range(75, 101)): 
    print(x) 

您可以通過添加它們連接兩個列表。

+2

請注意,在Python 3.x中,它會因'不支持的操作數類型爲+:'範圍'和'範圍'而失敗。 – alecxe

+0

你可以用'list(range(x,y))'' – Busturdust

+0

'來包裝啊。我錯過了打印(x)語法,表明他們正在使用3.我將很快修改。 –

0

如果您不想導入任何內容,可以使用列表理解和單行來實現。您基本上將所有數字添加到列表中,然後在每個數字後面以換行符打印列表作爲長字符串。

print("\n".join([str(x) for x in range(0,101) if x < 26 or x > 74])) 
1

使用列表理解:

[i for j in (range(0, 26), range(75, 101)) for i in j]