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

  • JonnyEthco

    JonnyEthco

    5 EKİM 2006
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • super1988guy

    super1988guy

    9 Aralık 2007