寶慕林4294392
2021-05-30 07:20:35
我正在嘗試使用以下代碼在嵌套列表中找到最長(zhǎng)的字符串table_data = [['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dogs', 'cats', 'moose', 'goose']]cnt = [""]*3for tab in range(len(table_data)): for liel in table_data[tab]: if len(liel) > len(cnt[tab]): cnt[tab]=lielprint(cnt)# ['cherries', 'Alice', 'moose']上面的代碼返回的是每個(gè)列表中最長(zhǎng)的字符串,但我認(rèn)為它的代碼很長(zhǎng),有沒有其他方法可以做到這一點(diǎn)?期待任何使用列表理解或函數(shù)的方法來做到這一點(diǎn)
2 回答

拉丁的傳說
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
期望使用列表理解來做到這一點(diǎn)
是的,列表理解是一個(gè)不錯(cuò)的選擇。
>>> [max(row, key=len) for row in table_data]
['cherries', 'Alice', 'moose']

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
實(shí)現(xiàn)結(jié)果的另一種方法是使用該map函數(shù),盡管這不使用列表理解:
table_data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
output = list(map(lambda data: max(data, key=len),table_data))
print(output)
輸出:
['cherries', 'Alice', 'moose']
添加回答
舉報(bào)
0/150
提交
取消