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

  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • SellerDp

    SellerDp

    27 EKİM 2009
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006