我目前正在尝试参加一些单线比赛,我注意到一些奇怪的行为使之变得很难。
此
"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日开始)。
答案 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"))