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
需要注意两点:

  • value()返回一个视图对象,但不是一个普通列表
  • 默认Python字典中的值/键是随机排序的
  • 因为
    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编辑后,错过了问题的最后一行