2011-04-20 20 views

cevap

13

itertools.combinations ait belgelerde bakın. http://www.python.org/download/

indirirken son sürümü deneyin:: en son kaynak indirilebilir

def combinations(iterable, r): 
    # combinations('ABCD', 2) --> AB AC AD BC BD CD 
    # combinations(range(4), 3) --> 012 013 023 123 
    pool = tuple(iterable) 
    n = len(pool) 
    if r > n: 
     return 
    indices = range(r) 
    yield tuple(pool[i] for i in indices) 
    while True: 
     for i in reversed(range(r)): 
      if indices[i] != i + n - r: 
       break 
     else: 
      return 
     indices[i] += 1 
     for j in range(i+1, r): 
      indices[j] = indices[j-1] + 1 
     yield tuple(pool[i] for i in indices) 
+0

Bu nasıl çalışır? Anlamaya çalışıyorum + bir şeyleri özlüyorum. 'Indices' dizi havuzunun elemanları kullanılır, ama tekrarlarını içermeyen endekslerinin setleri üretir anlamaya görünmüyor hangi söyler. –

+1

@JasonS, birkaç puan: İlk olarak, algoritma 'indices' zaman kriteri ile dizilerini oluşturduğu örneklerden bildirim, (özellikle' indeksleri [i] user3780389

+0

@JasonS Başka şey hakkında kafam karıştı: return statement. Orada girinti nedir? Ne zaman idam edilirse, buna karşılık gelenler nelerdir? – MaPy

1

: Bu fonksiyon için bir eşdeğer kod yoktur Python 2.7.1 gerçek kaynak kodu C ile yazılmıştır ve olabilir

İlgili konular