Python 扩展两个列表并在一行中取中间值

Python 扩展两个列表并在一行中取中间值,python,numpy,Python,Numpy,我试图取两个串联列表的中间值,其中一个列表是numpy repeat函数的结果 此代码工作正常: from numpy import median, repeat g = [4, 5, 6] g.extend([i.item() for i in repeat(0, 10)]) median(g) 由于某种原因,如果我尝试在一行中执行此操作,上述代码将失败: g = [4, 5, 6] median(g.extend([i.item() for i in repeat(0, 10)])) 我

我试图取两个串联列表的中间值,其中一个列表是numpy repeat函数的结果

此代码工作正常:

from numpy import median, repeat
g = [4, 5, 6]
g.extend([i.item() for i in repeat(0, 10)])
median(g)
由于某种原因,如果我尝试在一行中执行此操作,上述代码将失败:

g = [4, 5, 6]
median(g.extend([i.item() for i in repeat(0, 10)]))
我真的需要在一行中完成这项工作。我尝试使用asarray,但得到了相同的错误:

from numpy import asarray
g = [4, 5, 6]
median(asarray(g.extend([i.item() for i in repeat(0, 10)])))
上面,我使用
item()
将repeat的numpy类型输出转换回常规python类型。

因为
g.extend()
返回
None
,而不是扩展列表,所以可以在列表之间使用
+
操作符:

>>> median(g + ([i.item() for i in repeat(0, 10)]))
0.0
# or, getting rid of the unnecessary list comprehension as per @xdhmoore's comment:
>>> median(g + repeat(0, 10).tolist())
将两个列表与
+
一起添加在功能上与
.extend()
相同,但不是就地添加:

>>> g + ([i.item() for i in repeat(0, 10)])
[4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


# vs:

>>> g = [4, 5, 6]

>>> g.extend([i.item() for i in repeat(0, 10)])

>>> g
[4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

我的numpy技能很差,但是如果
g.extend()
没有返回
g
,你就不能将它传递到
media()
中,得到与
media(g)
相同的结果。谢谢,知道有什么解决方法吗?我的乌龟自己做了一个尝试,但是@sacuL打败了我。:)我想你也可以使用
repeat(0,10).tolist()
使它更简洁?@xdhmoore,是的,那会更好!补充我的回答:)谢谢,太好了
>>> g + ([i.item() for i in repeat(0, 10)])
[4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


# vs:

>>> g = [4, 5, 6]

>>> g.extend([i.item() for i in repeat(0, 10)])

>>> g
[4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]