2010-01-09 22 views
6

Belirli bir listede tutulan her listenin uzunluğunu nasıl alacağımı bulmaya çalışıyorum. Örneğin:Python bir alt listeden liste uzunluklarını buluyor

a = [] 
a.append([]) 
a[0].append([1,2,3,4,5]) 
a[0].append([1,2,3,4]) 
a[0].append([1,2,3]) 

Ben böyle bir komutu çalıştırmak istiyorum:

len(a[0][:]) 

hangi çıkış uzunlukları [5,4,3] listesidir istediğim cevabı olur. Bu komut açıkça işe yaramıyor ve denediğim birkaç şeyi de yapmıyor. Lütfen yardım et!

+0

çalışır aşağıdaki çalışmaz Matthew cevabı mümkün it mi zamanki "eski okul" yolunu kullanarak [0] 'daki bir liste de listeler içeriyor mu? – danben

cevap

17

[len(x) for x in a[0]]?

>>> a = [] 
>>> a.append([]) 
>>> a[0].append([1,2,3,4,5]) 
>>> a[0].append([1,2,3,4]) 
>>> a[0].append([1,2,3]) 
>>> [len(x) for x in a[0]] 
[5, 4, 3] 
+1

Bir [0] boyutuna bağlı olarak, haritayı kullanarak Matthew Iselin'in çözümünü tercih etmek isteyebilirsiniz. Bazı durumlarda (lambda gerekli değildir) harita marjinal olarak daha hızlı olabilir. Ama bu sadece çok büyük bir olurdu [0] – sberry

3
[len(x) for x in a[0]] 
3

Bu List comprehension olarak bilinir (daha fazla bilgi ve açıklama için tıklayın).

[len(l) for l in a[0]] 
8

map(len, a[0])

2
def lens(listoflists): 
    return [len(x) for x in listoflists] 

şimdi, sadece yerine lens(a[0]) diyoruz senin len(a[0][:]) (yapabilecekleriniz, madem ısrar ediyorsun, o gereksiz [:] eklemek, ama bu sadece hiçbir amaç için bir kopyasını yapıyor istenen - israf değil, istemiyorum ;-).

1

t=[] 
for item in a[0]: 
    t.append(len(item)) 
print t 
0

Python 3'te biri hem Python 2 ve Python 3

list(map(len, a[0]))

İlgili konular