我目前想要以下输出:
[161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 13362, 13363, 13364, 13365, 13366, 13367, 13368, 13369, 13370, 13383, 13384, 11100, 667, 6503, 6506, 666]
(更精简版:):
[161...172, 13362...13370, 13383, 13384, 11100, 667, 6503, 6506, 666]
所以我想这样做:
emoteIds = range(161, 173)
for i in range(13362, 13371):
emoteIds.append(i)
for i in [13383, 13384, 11100, 667, 6503, 6506, 666]:
emoteIds.append(i)
然而,我觉得这可以浓缩。有没有办法让我在列表中加入range()
而不在列表中创建另一个列表?我尝试使用list()
功能,但无济于事。
答案 0 :(得分:2)
你不需要使用循环;只是连接列表对象:
guard
(在Python 3中,您必须使用emoteIds = range(161, 173) + range(13362, 13371) + [
13383, 13384, 11100, 667, 6503, 6506, 666]
调用将list()
对象转换为实际列表。
您也可以查看list.extend()
;你可以使用:
range()
或emoteIds = range(161, 173)
emoteIds.extend(range(13362, 13371))
emoteIds.extend([13383, 13384, 11100, 667, 6503, 6506, 666])
扩充作业,与此处的+=
相同:
list.extend()
答案 1 :(得分:0)
使用numpy.r_
为你创造范围 -
np.r_[161:173, 13362:13371, 13383, 13384, 11100, 667, 6503, 6506, 666]
示例运行 -
In [461]: np.r_[161:173, 13362:13371, 13383, 13384, 11100, 667, 6503, 6506, 666]
Out[461]:
array([ 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 13362, 13363, 13364, 13365, 13366, 13367,
13368, 13369, 13370, 13383, 13384, 11100, 667, 6503, 6506, 666])
如果您需要列表作为输出,请在最后使用.tolist()
方法 -
np.r_[161:173, 13362:13371, 13383, 13384, 11100, 667, 6503, 6506, 666].tolist()