gpt4 book ai didi

python - 列表与列表列表的第一个元素之间的交集

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:57 24 4
gpt4 key购买 nike

我有两个列表:

wordlist =  ['A', 'Aani', 'Aaron', 'Aaronic',
'Aaronical', 'Aaronite', 'Aaronitic',
'Aaru', 'Ab', 'Ababdeh']

wordlist_compound = [['A','0'], ['Aaronic','1'], ['Key','2'],
['Aaronical','3'], ['Aaronite','4'], ['Yes','5']]

我想取两个单词的交集,并制作一个列表,其中包含第三个列表 wordlist_final 中的单词、数字组合数字,这样 wordlist_final 看起来像:

[['A','0'], ['Aaronic','1'], ['Aaronical','3'], ['Aaronite','4']]

我当前的代码如下:

wordlist_final = []
for index, word in enumerate(wordlist):
for word_comp in wordlist_compound:
if word[index] == wordlist_compound[index][0]:
wordlist_final.append(wordlist_compound[index])

但我收到“字符串索引超出范围错误”

最佳答案

使用列表推导式可以轻松完成输出:

wl=['A', 'Aani', 'Aaron', 'Aaronic', 'Aaronical', 'Aaronite', 'Aaronitic', 'Aaru', 'Ab', 'Ababdeh']
wlc=[['A','0'], ['Aaronic','1'], ['Key','2'], ['Aaronical','3'], ['Aaronite','4'], ['Yes','5']]

print [[word, i] for word,i in wlc if word in wl]
# [['A', '0'], ['Aaronic', '1'], ['Aaronical', '3'], ['Aaronite', '4']]

替代信用证:

print [li for li in wlc if li[0] in wl]   

如果你想要一个循环结构:

wlf = []
for word, i in wlc:
if word in wl:
wlf.append([word,i])

print wlf
# [['A', '0'], ['Aaronic', '1'], ['Aaronical', '3'], ['Aaronite', '4']]

Python 序列通常不需要枚举来处理序列中的对象。您通常只需要使用enumerate,如果除了序列本身之外还有关于索引或顺序的“数据”。

在这里,您将获取 wordlist_compound 中的每个元素,并测试 wordlist 中单词的成员资格。无需枚举。如果你反转循环,你也大大简化了任务;在 wordlist_compound 上循环,而不是像在外循环中那样在 wordlist 上循环。您的输出是 wordlist_compound 中元素的过滤器;当然,这意味着您也可以使用 filter:

print filter(lambda li: li[0] in wl, wlc)
# [['A', '0'], ['Aaronic', '1'], ['Aaronical', '3'], ['Aaronite', '4']]

干杯。

关于python - 列表与列表列表的第一个元素之间的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com