如何使用range创建包含其他值的列表?

2024-09-28 13:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前需要以下输出:

[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()函数,但没有效果。你知道吗


Tags: 函数in版本列表forrange精简list
2条回答

不需要使用循环;只需连接列表对象:

emoteIds = range(161, 173) + range(13362, 13371) + [
    13383, 13384, 11100, 667, 6503, 6506, 666]

(在python3中,必须使用list()调用将range()对象转换为实际列表)。你知道吗

您可能还需要查看^{};您可以使用:

emoteIds = range(161, 173)
emoteIds.extend(range(13362, 13371))
emoteIds.extend([13383, 13384, 11100, 667, 6503, 6506, 666])

或者是一个+=增广赋值,它和list.extend()在这里是一样的:

emoteIds = range(161, 173)
emoteIds += range(13362, 13371))
emoteIds += [13383, 13384, 11100, 667, 6503, 6506, 666]

^{}为你在引擎盖下创建范围-

 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])

如果您需要一个列表作为输出,请在末尾使用^{}方法-

np.r_[161:173, 13362:13371, 13383, 13384, 11100, 667, 6503, 6506, 666].tolist()

相关问题 更多 >

    热门问题