3 回答

TA貢獻1780條經驗 獲得超4個贊
您可以使用列表理解:
['_'.join(map(lambda x: x[:3], x.split('_'))) for x in list_exp]
代碼:
list_exp=["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
print(['_'.join(map(lambda x: x[:3], x.split('_'))) for x in list_exp])
# ['Bab_exp', 'Ocr_mac', 'Oje_mul']

TA貢獻1835條經驗 獲得超7個贊
你可以這樣試試。
在運行所有這些之前,只需快速瀏覽一下在字符串上定義的list comprehension&方法join()的使用。split()
>>> list_exp = ["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
>>>
>>> output = ['_'.join([part[:3] for part in name.split("_")]) for name in list_exp]
>>> output
['Bab_exp', 'Ocr_mac', 'Oje_mul']
>>>

TA貢獻1982條經驗 獲得超2個贊
[
*map(
lambda strip:'_'.join([st[:3] for st in strip]),
[
*map(
lambda s:s.split('_'),
["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
)
]
)
]
亂七八糟的解釋:
首先,我們將列表中的每個字符串通過 '_' 給我們
[['Babylona', 'expetiendra'], ['Ocracylus', 'machabrus'], ['Ojeris', 'multifasciatus']]
然后我們使用 [:3] 為新列表中的每個字符串獲取前 3 個字母
Finnaly 再次加入 '_'.join()
['Bab_exp', 'Ocr_mac', 'Oje_mul']
此示例使用地圖解包 和lamdas
添加回答
舉報