2017-09-01 7 views
1

ちょっと長めのリストを10リスト作成する方法を知っていたのかと思っていました。最初のリストは空でなければなりません。つまり、len(mylist[0]) == 0;の2番目のリストは1つの要素を持つ必要があります。len(mylist[1]) == 1;などです。私はextendappendinsertを使用しようとしてきたが、無駄に増加する長さのリストを作成するpython

は、これまでのところ私は、任意の助けをいただければ幸いです

def mylists(x):  
    d = [[] for x in range(0,x)] 
    return d 

print (mylists(10) 

なし要素

で10のリストを作成することができました!

あなたが行うことができます

答えて

0

はこれを試してみてください:

super_list = [] 
for i in range(10): 
    super_list.append(list(range(i))) # .append(range(i)) suffices for python2 

あなたが希望する結果に応じて、範囲を微調整することもできます。それの10回の反復は、あなたに10本のリストを提供しますので、同じよう:あなたはもっとfunctional方法でそれをやってように感じる場合は

[[], 
[0], 
[0, 1], 
[0, 1, 2], 
[0, 1, 2, 3], 
[0, 1, 2, 3, 4], 
[0, 1, 2, 3, 4, 5], 
[0, 1, 2, 3, 4, 5, 6], 
[0, 1, 2, 3, 4, 5, 6, 7], 
[0, 1, 2, 3, 4, 5, 6, 7, 8]] 

、これは、Python 2で同じ結果を達成する:

map(range, range(10)) 

list(map(lambda i: list(range(i)), range(10))) 
+1

Python2のみで動作します。 Python3は 'list'への変換を必要とします。 –

+2

ラムダは必要ありません。 'map(range、range(10))'はうまくいきます。 – user2357112

+0

いいコメント、ありがとう。 LambdaはPython 3でも必要ですが、それは余分な 'list'呼び出しを持っているからです。 – robmathers

1

print([[i]*i for i in range(10)]) 
0
>>> [[i for i in range(n)] for n in range(1,8,1)] 
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6]] 

の方法を使用する:Pythonの

>>> def test(n): 
...  return [[i for i in range(m)] for m in range(1,n+2,1)] 
... 
>>> 
>>> print test(5) 
[[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5]] 
関連する問題