第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Python,遞歸減少列表(組合/排列)

Python,遞歸減少列表(組合/排列)

三國(guó)紛爭(zhēng) 2021-03-31 08:15:30
我試圖做一個(gè)通用的功能,將減少這樣的列表:func(['a','b','c'],str.join) # --> ['a','b','c','ab','ac','bc','abc']func(['a','b','c'],lambda: a,b:a+'x'+b) # --> ['a','b','c','axb','axc','bxc','axbxc']我真的不知道該怎么做。我做了幾次嘗試,但都沒(méi)有成功。我很確定有一種方法可以減少它,但是我對(duì)使用此功能不太滿(mǎn)意。這里有一些嘗試:reduce(lambda a,b:[a,b,str(a)+str(b)],['a','b','c'])reduce(str.join,['a','b','c'])我認(rèn)為我在某處缺少遞歸。我不是特別要求代碼,歡迎任何幫助或建議。謝謝。
查看完整描述

2 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

itertools.combinations將為您提供一定長(zhǎng)度的所有組合。我們對(duì)每個(gè)可能的子列表長(zhǎng)度采用所有組合。然后,我們將您感興趣的函數(shù)(lambda函數(shù),在本例中為"x".join)映射到每個(gè)生成的組合。


>>> import itertools as it

>>> a = ['a','b','c']

>>> l = [map("x".join, list(it.combinations(a, l))) for l in range(1,len(a)+1)]

>>> l

[['a', 'b', 'c'], ['axb', 'axc', 'bxc'], ['axbxc']]

現(xiàn)在l是我們要展平的列表的列表:


>>> [ x for y in l for x in y]

['a', 'b', 'c', 'axb', 'axc', 'bxc', 'axbxc']


查看完整回答
反對(duì) 回復(fù) 2021-04-02
?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)怎么樣?


>>> import itertools

>>> def func(mylist, letter):

...     L = []

...     for i in range(len(mylist)):

...             L.append(list(itertools.combinations(mylist,i+1)))

...     return [letter.join(i) for i in itertools.chain.from_iterable(L)]

... 

>>> func(['a','b','c'], 'x')

['a', 'b', 'c', 'axb', 'axc', 'bxc', 'axbxc']


查看完整回答
反對(duì) 回復(fù) 2021-04-02
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)