Wil*_*ilk 58 python list append
我想做这样的事情:
myList = [10,20,30]
yourList = myList.append (40)
Run Code Online (Sandbox Code Playgroud)
不幸的是,list append不会返回修改后的列表.
那么,我如何允许append
返回新列表?
Mar*_*ers 104
不要使用追加而是连接:
yourList = myList + [40]
Run Code Online (Sandbox Code Playgroud)
这会返回一个新列表; myList
不会受到影响.如果您还需要myList
受影响,请使用.append()
,然后yourList
单独指定(副本)myList
.
小智 15
在python 3中,您可以通过解压旧的并添加新元素来创建新列表:
a = [1,2,3]
b = [*a,4] # b = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
当你这样做时:
myList + [40]
Run Code Online (Sandbox Code Playgroud)
你实际上有3个列表.
oly*_*lyk 10
不幸的是,这里的答案都没有完全解决所问的问题。这是一个简单的方法:
lst = [1, 2, 3]
lst.append(4) or lst # the returned value here would be the OP's `yourList`
# [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
人们可能会问这样做的真正需要,例如当有人需要提高 RAM 使用率、进行微基准测试等时,这些通常是无用的。然而,有时有人真的是在“问所问的问题”(我不知道这里是否是这种情况),而现实比我们所知的更加多样化。所以这是一个(因为脱离上下文而设计的)用法......而不是这样做:
dic = {"a": [1], "b": [2], "c": [3]}
key, val = "d", 4 # <- example
if key in dic:
dic[key].append(val)
else:
dic[key] = [val]
dic
# {'a': [1], 'b': [2], 'c': [3], 'd': [4]}
key, val = "b", 5 # <- example
if key in dic:
dic[key].append(val)
else:
dic[key] = [val]
dic
# {'a': [1], 'b': [2, 5], 'c': [3], 'd': [4]}
Run Code Online (Sandbox Code Playgroud)
可以在任何需要表达式(而不是语句)的地方使用上面的 OR 表达式:
key, val = "d", 4 # <- example
dic[key] = dic[key].append(val) or dic[key] if key in dic else [val]
# {'a': [1], 'b': [2], 'c': [3], 'd': [4]}
key, val = "b", 5 # <- example
dic[key] = dic[key].append(val) or dic[key] if key in dic else [val]
# {'a': [1], 'b': [2, 5], 'c': [3], 'd': [4]}
Run Code Online (Sandbox Code Playgroud)
或者,等效地,当列表中没有虚假dic.get(key, <default value>)
值时,可以尝试某种更好的方法。
list.append
是内置的,因此无法更改.但如果你愿意使用其他东西append
,你可以尝试+
:
In [106]: myList = [10,20,30]
In [107]: yourList = myList + [40]
In [108]: print myList
[10, 20, 30]
In [109]: print yourList
[10, 20, 30, 40]
Run Code Online (Sandbox Code Playgroud)
当然,这样做的缺点是创建了一个新的列表,这需要花费更多的时间 append
希望这可以帮助
归档时间: |
|
查看次数: |
42264 次 |
最近记录: |