用Python生成困难列表
我正试着把表格列出来用Python生成困难列表,python,list,Python,List,我正试着把表格列出来 [111, 112, 113, 121, 122, 123, 131, 132, 133, 211, 212, 213, ...] 在Python中,但是我有很多困难。我从名单开始 [1, 1, 1] 然后将1添加到最后一个术语,直到它点击3,然后重置它以转到列表的下一个元素并从那里继续。然后,我可以从每个列表中创建一个整数(即,[1,1,1]变成111)。然而,我认为这是矫枉过正。有没有更简单的方法在Python中生成这种类型的列表?您可以很容易地这样做: [(a+b
[111, 112, 113, 121, 122, 123, 131, 132, 133, 211, 212, 213, ...]
在Python中,但是我有很多困难。我从名单开始
[1, 1, 1]
然后将1添加到最后一个术语,直到它点击
3
,然后重置它以转到列表的下一个元素并从那里继续。然后,我可以从每个列表中创建一个整数(即,[1,1,1]
变成111
)。然而,我认为这是矫枉过正。有没有更简单的方法在Python中生成这种类型的列表?您可以很容易地这样做:
[(a+b+c) for a in range(100,400,100) for b in range(10,40,10) for c in range(1,4,1)]
输出:
[111, 112, 113, 121, 122, 123, 131, 132, 133, 211, 212, 213, 221, 222, 223, 231, 232, 233, 311, 312, 313, 321, 322, 323, 331, 332, 333]
以下是一种容易推广到不同数字集和/或更长序列的方法:
In [14]: [int(''.join(l)) for l in itertools.product('123', repeat=3)]
Out[14]:
[111,
112,
113,
121,
122,
123,
131,
132,
133,
211,
...
请尝试以下操作:
tuple_to_int = lambda dd: reduce(lambda rst, d: rst * 10 + d, dd)
print map(tuple_to_int, itertools.product(*([[1, 2, 3]]*3)))
一般来说,您可以使用以下方法:
def gen_some_numbers(count=None):
hundreds = 100
tens = 10
ones = 0
while count is None or count > 0:
if count is not None:
count -= 1
ones += 1
if ones > 3:
ones = 1
tens += 10
if tens > 30:
tens = 10
hundreds += 100
yield hundreds + tens + ones
print(list(gen_some_numbers(40)))
让我们看看你做了什么。在这个问题上有太多的反对票仅仅因为没有发布代码?