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

  • emimusic

    emimusic

    10 Mart 2006
  • spectragirlz16's channel

    spectragirlz

    22 Ocak 2012
  • Utah Valley Online

    Utah Valley

    9 AĞUSTOS 2010