在python中,我如何获得输入变量的所有可能性?

时间:2014-07-13 05:23:43

标签: python list

我和一位朋友决定我们的脚本版本太慢,并将其移植到python。

脚本位于此处:

https://gist.github.com/anonymous/aba4b07237eb2ccec30b

这是一个小问题,太多的for循环,并且它不是动态的。因为它不是动态的,python程序会报告太多嵌套的for循环。我和我的朋友怎么能避免这个错误,并且可能输入任何数字来获取列表集合的输出?

我知道这可以通过某种功能以某种方式完成,但我们是python和脚本语言的新手,只是试图突破限制以查看可以做什么,并在此过程中学习一点。

3 个答案:

答案 0 :(得分:1)

不太确定你在那里做什么,但我的猜测是你误解了#34;因为在" 。您可以在此处详细了解Python for loop

我的猜测是你试图在列表中创建一个包含所有元素的字符串。 您可以改为使用

myFileData = "\n" + "".join(collections)

myFile = open(myFilePath, "a")
myFile.write(myfileData)
myFile.close()

print(myFileData)

通过添加""来创建一个字符串。列表中的每个项目之间。如果您希望列表空间中的项目分开,那么您可以更改,""用" "

myFileData = " ".join(collections)

答案 1 :(得分:0)

这不是你如何迭代列表。

import string
collections = list(string.ascii_letters)
collections.append([digit for digit in string.digits])
# much easier than typing it out by hand
for char in collections:
    print char

这会填充列表,然后遍历它并打印每个项目。你需要确切地弄清楚你希望你的程序做什么(我不能)。

答案 2 :(得分:0)

我想你想要collections的笛卡尔积:

import itertools
collections = ['a','A','b','B' ]
for (x1,x2,x3) in itertools.product( collections, repeat= 3 ) :
    print x1,x2,x3

输出:

'a', 'a', 'a'
'a', 'a', 'A'
'a', 'a', 'b'
'a', 'a', 'B'
'a', 'A', 'a'
'a', 'A', 'A'
...

或者,如果您有很多变量,请直接使用tuple

for t in itertools.product( collections, repeat= 3 ) :
    print t

输出:

('a', 'a', 'a')
('a', 'a', 'A')
('a', 'a', 'b')
('a', 'a', 'B')
('a', 'A', 'a')
('a', 'A', 'A')
...