在列表理解中生成多个项[英] Producing multiple items in a list comprehension

问题描述

有没有一种简单的方法可以让列表理解生成一个平面列表,
比如,每个输入参数的 [x,2*x]?

例如,我想做类似的事情:

[ [x,2*x] for x in range(4) ]

....并接收

[ 0,0,1,2,2,4,3,6]

....但是你当然会得到一个列表列表:

[[0, 0], [1, 2], [2, 4], [3, 6]]

我知道我可以使用任何标准的"扁平化".一些代码来打开这个
回到我想要的,但我希望有一些方法可以避免"列表
列表"第一代?

一个稍微类似的问题:如果我想"合并",比如说,list1=[1,2,3] 与
list2=[4,5,6] 得到[1,4,2,5,3,6],"zip"有什么巧妙的方法吗?到
这样做?

谢谢,
---Joel

推荐答案

Joel Koltner 写道:
有没有一种简单的方法可以让列表理解生成一个平面列表,
比如,每个输入参数的 [x,2*x]?

例如,我想做类似的事情:

[ [x,2*x] for x in range(4) ]

...并接收

[ 0,0,1,2,2,4,3,6]

...但你当然会得到一个列表列表:

[[0, 0], [1, 2], [2, 4], [3, 6]]

我知道我可以使用任何标准的"扁平化".一些代码来打开这个
回到我想要的,但我希望有一些方法可以避免"列表
列表"第一代?

一个稍微类似的问题:如果我想"合并",比如说,list1=[1,2,3] 与
list2=[4,5,6] 得到[1,4,2,5,3,6],"zip"有什么巧妙的方法吗?到
这样做?

谢谢,
---乔尔
--
http://mail.python.org/mailman/listinfo/python-list
第一部分:

def gen(n):
对于 xrange(n) 中的 i:
产量我
产量 2*i

打印列表(gen(4))

[0, 0, 1, 2, 2, 4, 3, 6]

杰拉德

乔尔·科尔特纳写道:
有没有一种简单的方法来获得列表理解以生成平面列表
例如,每个输入参数的 [x,2*x]?

例如,我想做类似的事情:

[ [x,2*x] for x in range(4) ]

...并接收

[ 0,0,1,2,2,4,3,6]

...但你当然会得到一个列表列表:

[[0, 0], [1, 2], [2, 4], [3, 6]]

我知道我可以使用任何标准的"扁平化".代码位转
这回到我想要的,但我希望有一些方法可以避免
"列表列表"第一代?
>>[x*y for x in range(4) for y in 1,2]
[0, 0, 1, 2, 2, 4, 3, 6]

一个稍微类似的问题:如果我想"合并",比如说,list1=[1,2,3] 与
list2=[4,5,6] 得到[1,4,2,5,3,6],有没有"zip"的巧妙方法
这样做?
>>items = [None] * 6
items[::2] = 1,2,3
items[1::2] = 4,5,6
items
[1、4、2、5、3、6]

彼得

乔尔·科尔特纳写道:
有没有一种简单的方法可以让列表理解生成一个平面列表,
比如,每个输入参数的 [x,2*x]?

例如,我想做类似的事情:

[ [x,2*x] for x in range(4) ]

...并接收

[ 0,0,1,2,2,4,3,6]

...但你当然会得到一个列表列表:

[[0, 0], [1, 2], [2, 4], [3, 6]]

我知道我可以使用任何标准的"扁平化".一些代码来打开这个
回到我想要的,但我希望有一些方法可以避免"列表
列表"第一代?

一个稍微类似的问题:如果我想"合并",比如说,list1=[1,2,3] 与
list2=[4,5,6] 得到[1,4,2,5,3,6],"zip"有什么巧妙的方法吗?到
这样做?

谢谢,
---乔尔
--
http://mail.python.org/mailman/listinfo/python-list
第一部分:

def gen(n):
对于 xrange(n) 中的 i:
产量我
产量 2*i

打印列表(gen(4))

[0, 0, 1, 2, 2, 4, 3, 6]

杰拉德


本文地址:https://www.itbaoku.cn/post/1050847.html