执行以下操作时:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
c = list(b)
c.extend(a.values())
print c
按照我的预期打印出[2, 4, 6, 1, 5, 3]
,但当我尝试在一行中执行列表复制和扩展时:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
d = list(b).extend(a.values())
print d
打印None
。为什么这些不同?
答案 0 :(得分:2)
因为list.extend()
没有返回修改后的列表,而是对列表本身进行操作。
我想你可能想重用d
。如果您想在扩展后创建一个新的d
来保存结果并在一行中执行,请尝试:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
d = list(b) + list(a.values())
print d
需要注意的两点:
答案 1 :(得分:1)
您甚至不需要制作变量d
。 extend()
会扩展列表,所以只需使用它:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
b.extend(a.values())
print b
这将为您提供所需的输出:[2, 4, 6, 5, 3, 1]
修改强>
根据OP,他希望b
保持不变。您需要做的就是复制b
然后再扩展它。你可以这样做:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
c = b[:]
c.extend(a.values())
print c
答案 2 :(得分:1)
您为d
变量分配的内容是列表(b).extend函数的结果。此方法不返回任何内容 - 它扩展了现有的可变对象。 list(b)已被修改但由于你没有将它保存在任何地方,语句将不起作用。