Python 在一行中扩展列表副本
当我执行以下操作时:Python 在一行中扩展列表副本,python,Python,当我执行以下操作时: 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。为什么这些不同?您甚至不需要使变量dextend(
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
。为什么这些不同?您甚至不需要使变量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
您甚至不需要使变量
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
分配给
d
变量的是list(b).extend函数的结果。此方法不返回任何内容-它扩展了现有的可变对象。列表(b)已修改,但由于您没有将其保存在任何位置,因此该语句不会产生任何效果 分配给d
变量的是列表(b).扩展函数的结果。此方法不返回任何内容-它扩展了现有的可变对象。列表(b)已修改,但由于您没有将其保存在任何位置,因此该语句不会产生任何效果 因为list.extend()
不返回修改后的列表,而是对列表本身进行操作
我想您可能想重用d
。如果要创建一个新的d
来保存扩展后的结果并在一行中执行,请尝试:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
d = list(b) + list(a.values())
print d
需要注意两点:
list.extend()
我想您可能想重用d
。如果要创建一个新的d
来保存扩展后的结果并在一行中执行,请尝试:
a = {'a': 1, 'b':3, 'c': 5}
b = [2,4,6]
d = list(b) + list(a.values())
print d
需要注意两点:
value()返回一个视图对象,但不是一个普通列表
默认Python字典中的值/键是随机排序的
您得到的结果是extend()
,实际上是None
<代码>扩展()
不返回list@AndreaCorbelliniis正确的。顺便说一句,为什么要显式使用列表(b)?b已经是一个列表了吗?@AndreaCorbellini谢谢,没错,我还想要一个未修改的b副本。有关Andrea所说内容的更多信息,请参见您获得的extend()
,实际上是无<代码>扩展()
不返回list@AndreaCorbelliniis正确的。顺便说一句,为什么要显式使用列表(b)?b已经是一个列表了吗?@AndreaCorbellini谢谢,对了,我也想要一份b的未修改副本。有关Andrea所说的更多信息,请参阅谢谢你的回答,但我实际上也想要保留一份b的未修改副本。我应该在之前复印一份吗?我用你申请的正确代码更新了我的答案。希望有帮助!谢谢你的回答,但实际上我也想保留一份未经修改的b副本。我应该在之前复印一份吗?我用你申请的正确代码更新了我的答案。希望有帮助@威尔被编辑了,错过了文章的最后一行question@Will编辑后,错过了问题的最后一行