2016-04-07 26 views
-1

Harita komutunu kullanarak bir aralıktaki öğeler listesini oluşturmak istiyorum. İki rakam (firstnum ve secondnum) arasındaki aralığı almak için aşağıdaki kod var ve iki sayı arasında artış ve myList sonuçların (aralığın iki ucu arasında) oluşturmak için söyleyen bir lambda deyimi. Benim sözdizimi emin, yanlış değil ancak neden ...Menzili bir listeden görüntülemek için haritayı kullanın

["myList"] = map(lambda x, y: x + 1, range(firstnum..secondnum)) 

cevap

1

Bu geçerli sözdizimi olacaktır:

>>> list(map(lambda x: x + 1, range(2, 12))) 
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

Ama daha basit aynı sonucu elde edebilirsiniz:

>>> list(range(3, 13)) 
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

Ya daha genel:

>>> firstnum = 2 
>>> secondnum = 12 
>>> (list(map(lambda x: x + 1, range(firstnum, secondnum))) == 
    list(range(firstnum + 1, secondnum + 1))) 
True 
+0

Bunun için teşekkürler, son sürümü kullanmaya çalıştım. negatif sayıların (x - 1) listesini verir, örneğin, firstnum = 5, secondnum = -20, ancak bu, 15 negatif sayı içeren bir liste yerine boş bir listeyle sonuçlanır. Listeyi artışlarla veya azaltmalarla yapıp yapmadığımı kontrol etmek için abs() işlevini kullanacağım, ancak yanlış yaptığımı söyleyebildiğiniz "x - 1" sonuçlarının boş listelerle sonuçlandığını – SamChancer

+1

Buna negatif bir adım atmanız gerekiyor: 'liste (aralık (5, -20, -1)). –

İlgili konular