>>>for x in iterable1:
... expression
地圖的形式是:
>>>map(lambda x:expression,iterable1)
如何擴展這個嵌套的呢?
實施例:
>>>for x in itr1:
... for y in itr2:
... expr
不使用推導。
編輯:僅使用地圖。
>>>for x in iterable1:
... expression
地圖的形式是:
>>>map(lambda x:expression,iterable1)
如何擴展這個嵌套的呢?
實施例:
>>>for x in itr1:
... for y in itr2:
... expr
不使用推導。
編輯:僅使用地圖。
在這一個承擔我。不是一個解釋,但2天后這工作。只使用地圖和列表。這是糟糕的代碼。歡迎提出縮短代碼的建議。 Python 3的溶液
實施例使用列表理解:僅使用地圖
>>>a=[]
>>>for x in [0,1,2]:
... for y in [100,200,300]:
... a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]
現在例如:使用用於
>>> a=[x+y for x in [0,1,2] for y in [100,200,300]]
>>> a
[100,200,300,101,201,301,102,202,302]
例
>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]
小得多python2.7溶液:
>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]
另一種變化:我通過電子郵件發送給Mark Lutz,這是他的解決方案。這不使用閉包,並且最接近於嵌套for循環功能。
>>> X = [0, 1, 2]
>>> Y = [100, 200, 300]
>>> n = []
>>> t = list(map(lambda x: list(map(lambda y: n.append(x + y), Y)),X))
>>> n
[100,200,300,101,201,301,102,202,302]
你不能。 lambda
僅限於返回值可封裝爲單個表達式的函數:語句不允許。
你應該問自己的一個問題是爲什麼你認爲這將是編寫Python程序的理想方式?爲了可讀性,語言已被明確定義,並且您應該盡一切可能來保持可讀性。
你可以使用itertools.product
建立自己的兩個嵌套序列的笛卡兒積,和map
你表達的2元組的該列表:
from itertools import product
map(lambda (x, y): expression, product(itr1, itr2))
例一些實際值:
seq = map(lambda (x, y): '%s:%s' % (x, y), product(itr1, itr2))
for item in seq:
print item
請注意,需要lambda (x, y)
來將每個2元組從序列解壓到表達式中使用的單獨的x
和y
參數。
Thinks lapin!
我有同樣的問題,你給我解德:
朗方式:
SUITE = 'Heart Diamonds Spades Clubs'.split()
RANKS = '2 3 4 5 6 7 8 9 10 J Q K A'.split()
for x in RANKS:
for y in SUITE:
deck.append(x+" " +y)
print(deck)
print(len(deck))
短道和SOLUTION:
deck = [x +" " + y for x in RANKS for y in SUITE]
這似乎並沒有解決OP問的問題。你只是分享自己的問題的答案? – Antimony
,正如待用;試試這個'l = [234,124,142]; list(map(lambda x:sum(map(int,x)),map(str,l)))':) –
@BhargavRao明白了。感謝提示。 – lapin