2016-06-07 94 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]