作者suzuke (suzuke)
看板Python
标题Re: [问题] 动态产生FOR回圈的办法
时间Mon Dec 12 19:04:00 2011
import itertools
listOne = ['a','b','c']
listTwo = ['d','e','f']
listThree = ['g','h','i']
for x in itertools.product(listOne,listTwo,listThree):
print ''.join(x)
根据上一篇的回文, 用itertools就可以解决罗~ 大概是这样, 有错请指正!
※ 引述《autumned (autumned)》之铭言:
: http://docs.python.org/library/itertools.html#itertools.product
: 有预设的module罗
: 请参照product
: 其他很多想要的组合功能也有:-)
: ※ 引述《marketcos (marketcos)》之铭言:
: : 本身PYTHON初学者
: : 这个问题 我想了两天了
: : 怎麽写都很逊, 烦请高手来指点
: : 事情是这样的...
: : 我想把数个lists的元素组合起来
: : 例如:
: : # listOne,listTwo,listThree分别是 ['a','b','c'] ['d','e','f'] ['g','h','i']
: : tmp = ""
: : combination = []
: : for i in listOne:
: : for j in listTwo:
: : for k in listThree:
: : tmp = i + j + k
: : combination.append(tmp)
: : print combination
: : 执行结果会是
: : ['adg', 'adh', 'adi', 'aeg', 'aeh', 'aei', 'afg', 'afh', 'afi', 'bdg', 'bdh',
: : 'bdi', 'beg', 'beh', 'bei', 'bfg', 'bfh', 'bfi', 'cdg', 'cdh', 'cdi', 'ceg',
: : 'ceh', 'cei', 'cfg', 'cfh', 'cfi']
: : 我的问题是,如果今天我的lists不只三个 (可能会有100个)
: : 除了for回圈写一百行, 还有什麽比较快的方法呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.94.21
1F:推 marketcos:强大!!! 12/12 19:42
2F:推 KSJ:推一个:) 不过new in version 2.6 Q_Q 12/12 20:17
3F:→ KSJ:2.5的话 要from future import 什麽吗? 12/12 20:17
4F:→ suzuke:应该不用itertools python2.4就有了 12/12 20:21
5F:→ suzuke:刚刚测试的结果好像是没product 12/12 20:22