扩展Python列表"内联"

6

我希望你能提供一种可以行内使用的list.extend()方法的替代方案。

与其使用

x = range(15,30,3)
x.extend([0])
print (x)

>>> [15, 18, 21, 24, 27, 0]

我需要一个行内工作的等效替代方案,就像这样:
print range(15,30,3).extend([0])

>>> None

但是extend方法不会返回列表本身。
是否有任何高级的开箱即用命令可以实现相同的功能?

啊,print sum([range(15,30,3)],[0]) 看起来适用于我的情况... - Alen
我不明白为什么它不起作用。这个也不起作用:["hi"].extend(["my", "name", "is"])。结果是None。 - cndnflyr
2个回答

16

只需使用+运算符将这些列表连接起来:

range(15, 30, 3) + [0]

或者,如果你需要一个迭代器并且 list 很大,请使用 itertools.chain

import itertools
it = itertools.chain(range(15, 30, 3), [0])

一个快速的注释:range在Python 3+中创建一个range对象,它不允许串联:

范围实现了除串联和重复以外的所有常见序列操作(因为范围对象只能表示遵循严格模式的序列,而重复和串联通常会违反该模式)。


1
在Python 3+中,像@vaultah所说的那样,range创建一个range对象。但是你可以先从range对象创建一个list。
x = list(range(15, 30, 3)) + [0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接