我正在尝试遍历范围(750、765)并添加非连续数字 769、770、774。如果我尝试在范围函数之后添加数字,它会返回范围列表,然后是单个数字:
>>> for x in range(750, 765), 769, 770, 774: print x
...
[750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764]
769
770
774
如何在一个列表中获取所有数字?
使用内置的 + 运算符将非连续数字附加到范围。
for x in range(750, 765) + [769, 770, 774]: print x
有两种方法可以做到这一点。
>>> for x in range(5, 7) + [8, 9]: print x
...
5
6
8
9
>>> import itertools
>>> for x in itertools.chain(xrange(5, 7), [8, 9]): print x
...
5
6
8
9
itertools.chain()远远优于它,因为它允许您使用任意可迭代对象,而不仅仅是列表和列表。它也更有效,不需要列表复制。它允许您使用 xrange,在循环时您应该使用它。
此页面上的其他答案将为您提供很好的服务。请注意,在 Python3.0 中,range
是一个迭代器(就像 xrange 在 Python2.x 中一样...... xrange 在 3.0 中消失了)。如果您尝试在 Python 3.0 中执行此操作,请确保在添加之前从范围迭代器创建一个列表:
for x in list(range(750, 765)) + [769, 770, 774]: print(x)
你在找这个吗:
mylist = range(750, 765)
mylist.extend([769, 770, 774])
在 python3 中,由于您不能将列表添加到范围,如果由于某种原因您不想导入 itertool,您也可以手动执行相同的操作:
for r in range(750, 765), [769, 770, 774]:
for i in r:
print(i)
或者
for i in [i for r in [range(750, 765), [769, 770, 774]] for i in r]:
print(i)