24小时热门版块排行榜    

查看: 1965  |  回复: 14

darknesseye

铁虫 (小有名气)

[求助] python写简单代码 已有3人参与

[0,1,2,3]和[0,1,2,3]两两组合成[[0,0],[0,1],[0,2],[0,3],[1,0],[1,1],[1,2],[1,3],[2,0],[2,1],[2,2],[2,3],[3,0],[3,1],[3,2],[3,3]]
回复此楼
好好看,好好学
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

virtualzx

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
darknesseye: 金币+10 2016-04-05 16:28:24
如果是简单列表,
result=[[i,j] for i in l1 for j in l2]
大尺寸的列表最好用itertools.product,快得多,也不需要存储生成的组合列表。例如逐个打印所有组合可以用

from itertools import product
for p in product(l1, l2):
    print p

你可以做任意个iterable的组合。输出是generator对象,如果需要转化为列表对象用list(product(l1,l2))

发自小木虫IOS客户端
4楼2016-04-05 15:51:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

castigliano

新虫 (初入文坛)

〔〔a,b〕 for a in〔0,1,2,3〕 for b in 〔0,1,2,3〕〕

发自小木虫Android客户端
3楼2016-04-05 15:44:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
darknesseye: 金币+5 2016-04-05 16:29:44
给你个诡异点的办法,本来我以为你直接用zip就可以呢,仔细看了看不行,但是改一下还是可以的,方法诡异点,但是也能用:
a=[0,1,2,3]
b=[0,1,2,3]
c=[]
[zip(*len(b),b) for i in a]
结果:
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3)]
思考,让这个世界更有趣。
6楼2016-04-05 16:13:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

M-ing.

铜虫 (小有名气)

2楼2016-04-05 15:34:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

伊哭

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
darknesseye: 金币+5 2016-04-05 16:30:28
我也打栓学习Python,马克一级,共同学习哈
5楼2016-04-05 16:09:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

引用回帖:
6楼: Originally posted by tieer at 2016-04-05 16:13:23
给你个诡异点的办法,本来我以为你直接用zip就可以呢,仔细看了看不行,但是改一下还是可以的,方法诡异点,但是也能用:
a=
b=
c=[]

结果:
...

[zip(*len(b),b) for i in a]
思考,让这个世界更有趣。
7楼2016-04-05 16:14:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

引用回帖:
6楼: Originally posted by tieer at 2016-04-05 16:13:23
给你个诡异点的办法,本来我以为你直接用zip就可以呢,仔细看了看不行,但是改一下还是可以的,方法诡异点,但是也能用:
a=
b=
c=[]

结果:
...

不知道为什么,粘贴的内容被自动改了
应该是
CODE:
[zip([i]*len(b),b) for i in a]

思考,让这个世界更有趣。
8楼2016-04-05 16:15:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

darknesseye

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by M-ing. at 2016-04-05 15:34:19
两个for循环就好了

具体怎么写呢?一直没搞懂2个for语句
好好看,好好学
9楼2016-04-05 16:27:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

darknesseye

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by virtualzx at 2016-04-05 15:51:16
如果是简单列表,
result=
大尺寸的列表最好用itertools.product,快得多,也不需要存储生成的组合列表。例如逐个打印所有组合可以用
from itertools import product
for p in product(l1, l2):
    print p
你可以 ...

非常棒啊,列出了2种方法!
好好看,好好学
10楼2016-04-05 16:29:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 darknesseye 的主题更新
信息提示
请填处理意见