SORU
23 Kasım 2008, Pazar


Nasıl Python ile eşit büyüklükte parçalar halinde bir liste split musunuz?

Rasgele uzunlukta bir liste var ve aynı büyüklükte parçalara bölünür ve üzerinde çalışmak gerekiyor. Bazıları bariz şekilde bunu yapmak için tutmak gibi bir zaman sayacı ve iki liste ve ikinci liste doluyor eklemek için ilk boş liste ve ikinci liste için bir sonraki turun veri, ama bu potansiyel olarak çok pahalı.

Eğer kimse herhangi bir uzunlukta listeler için bu iyi bir çözüm, örneğin; jeneratörleri kullanan var mı diye merak ettim.

Bu çalışması gerekir:

l = range(1, 1000)
print chunks(l, 10) -> [ [ 1..10 ], [ 11..20 ], .., [ 991..999 ] ]

Bir şey itertools yararlı arıyordum ama belli ki faydalı bir şey bulamadım. Belki onu da özledim.

İlgili soru: What is the most “pythonic” way to iterate over a list in chunks?

CEVAP
23 Kasım 2008, Pazar


İşte istediğiniz parçalar üreten bir jeneratör:

def chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in xrange(0, len(l), n):
        yield l[i:i n]

import pprint
pprint.pprint(list(chunks(range(10, 75), 10)))
[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
 [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
 [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
 [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
 [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
 [70, 71, 72, 73, 74]]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • max2sims2

    max2sims2

    19 Kasım 2008
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009