Tek bir Öğe Listesi oluşturmak Tekrarlanan n Kez Python
Anlama, bunu yapacaktır, ama eğer daha da kısa (ve daha Pythonic?) olup olmadığını merak ediyordum bir liste biliyorum yaklaşım.
Listeleri bir dizi, uzunluğu değişen tüm oluşturmak istiyorum. Her liste aynı öğe e içerir, tekrarlanan n kez (listenin uzunluğu n =). Nasıl listeler yapmadan oluştururum
[e for number in xrange(n)]
her liste için?
CEVAP
De yazabilirsiniz:
[e] * n
Eğer e örneğin boş bir liste ise aynı liste için kaynaklar n, n bağımsız boş bir liste ile bir liste olsun dikkat etmelisiniz.
Performans testi
İlk bakıştagörünüyortekrar n Aynı öğeleri içeren bir liste oluşturmak için en hızlı yoludur:
>>> timeit.timeit('itertools.repeat(0, 10)', 'import itertools', number = 1000000)
0.37095273281943264
>>> timeit.timeit('[0] * 10', 'import itertools', number = 1000000)
0.5577236771712819
Ama bekle - adil bir test değil
>>> itertools.repeat(0, 10)
repeat(0, 10) # Not a list!!!
itertools.repeat
aslında liste oluşturmak değil işlevi, Eğer isterseniz bir liste oluşturmak için kullanılan bir nesne oluşturur! Tekrar deneyelim, ama bir liste dönüştürme:
>>> timeit.timeit('list(itertools.repeat(0, 10))', 'import itertools', number = 1000000)
1.7508119747063233
Eğer bir liste istiyorsanız, [e] * n
kullanın. Eğer elemanları tembel oluşturmak istiyorsanız, repeat
kullanın.
Nasıl Python listesi tüm permütasyon o...
Bulma öğenin dizin listesi Python içer...
Nasıl sözlük değerlere göre sözlükler ...
Nasıl klon ya da Python içinde bir lis...
Python: liste üreteci ile bir sözlük o...