python 3.7.1拆分后无法追加内联

时间:2018-11-06 07:44:20

标签: python python-3.x split append

我目前正在尝试参加一些单线比赛,我注意到一些奇怪的行为使之变得很难。


"a,b,c".split(",").append("d")
返回无,而这是
l = "a,b,c".split(",")
l.append("d")

正确返回[“ a”,“ b”,“ c”,“ d”]
是已知问题还是正常行为?文档说split会返回一个字符串列表。
我在Arch官方存储库中使用的是python 3.7.1版本(从10月22日开始)。

1 个答案:

答案 0 :(得分:2)

l.append("d")返回None,就像另一个调用一样。它将使列表l发生变化(尽管它在另一个调用中也是如此,但是您没有对列表对象的引用):

>>> l = "a,b,c".split(",")
>>> l.append("d") is None  # the append call still returns None
True
>>> l  # it does, however, mutate the list
['a', 'b', 'c', 'd']

为了在一行中获得相同的结果,您可以仅使用普通串联:

l = "a,b,c".split(",") + ["d"]

如果(由于某种原因)您想使用list.append 以单行的形式获得结果列表,则您将不得不采取一些恶作剧,例如like亵发电机或对副作用的理解(不要在严肃的代码中这样做!):

l = next(x for x in ("a,b,c".split(","),) if not x.append("d"))