2 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以遍歷字符串中的字符,并遍歷 word_list 中的單詞。因此,您可以執(zhí)行以下操作:
def convert_word(a):
return [char2bin(x) for x in a]
result = [convert_word(word) for word in word_list]
使用我自己對(duì) char2bin 的解釋:
def char2bin(x):
return list(bin(ord(x)))[2:]
def convert_word(a):
return [char2bin(x) for x in a]
word_list = ['abc','bcd']
[convert_word(word) for word in word_list]
給出結(jié)果:
[[['1', '1', '0', '0', '0', '0', '1'],
['1', '1', '0', '0', '0', '1', '0'],
['1', '1', '0', '0', '0', '1', '1']],
[['1', '1', '0', '0', '0', '1', '0'],
['1', '1', '0', '0', '0', '1', '1'],
['1', '1', '0', '0', '1', '0', '0']]]
我相信這是您正在尋找的格式。

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
這里有三種基本方法,理解性、功能性和程序性。理解形式被認(rèn)為是慣用的 Python(或“pythonic”)。
理解
列表推導(dǎo)式可以從任何 Python 表達(dá)式構(gòu)建列表元素,包括其他列表推導(dǎo)式——您可以嵌套它們。
[[char2bin(c) for c in word] for word in ["Hello, W", "orld!---"]]
Python 理解語法具有map()循環(huán)和元素filter()的等價(jià)物,而不需要像那些內(nèi)置函數(shù)那樣的顯式 lambda。我們不需要此任務(wù)的過濾器。但是因?yàn)槟呀?jīng)char2bin()聲明了一個(gè)函數(shù),所以您已經(jīng)可以在map()沒有 lambda 的情況下使用,就像這樣。
[[*map(char2bin, word)] for word in ["Hello, W", "orld!---"]]
上面的版本在理解中混入了一點(diǎn)函數(shù)式風(fēng)格,大概是最Pythonic的了。
在 Python 2 中,您不需要將它放在[*]部件中以使其成為列表,但在 Python 3 中,它map()會(huì)生成一個(gè)惰性生成器而不是列表。
功能性
您始終可以使用 lambda(匿名函數(shù))在映射和過濾器方面重寫推導(dǎo)式。當(dāng)理解可以使用時(shí),您通常不會(huì)在 Python 中使用 lambda。
[*map(lambda word: [*map(char2bin, word)], ["Hello, W", "orld!---"])]
新的 unpack-into-list 語法[*foo]仍然可以用list構(gòu)造函數(shù)來完成。
list(map(lambda word: list(map(char2bin, word), ["Hello, W", "orld!---"]))
以上是一種更函數(shù)式的風(fēng)格,盡管它可以通過使用柯里化和函數(shù)組合的函數(shù)庫更進(jìn)一步地轉(zhuǎn)向無點(diǎn)風(fēng)格。但即使是像 Haskell 這樣的純函數(shù)式語言也有推導(dǎo)式,這也是 Python 最初從這里得到的。
程序
通過使用顯式的 for 循環(huán)和累加器(以及有過濾器時(shí)的 if 語句),列表推導(dǎo)式總是可以轉(zhuǎn)換為過程式的。這要冗長得多,但對(duì)于那些來自像 C 這樣的過程語言的人來說會(huì)更熟悉,所以你仍然經(jīng)常在 Python 中看到它。
result = []
for word in ["Hello, W", "orld!---"]:
binchars = []
for c in word:
binchars.append(char2bin(c))
result.append(binchars)
將以上與我的建議進(jìn)行比較:
[[*map(char2bin, word)] for word in ["Hello, W", "orld!---"]]
添加回答
舉報(bào)