用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)))    

让我们看看你做了什么。在这个问题上有太多的反对票仅仅因为没有发布代码?