SORU
11 AĞUSTOS 2010, ÇARŞAMBA


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
11 AĞUSTOS 2010, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012