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

标签 python list intersection enumerate

我有两个列表:

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/

相关文章:

lua - 射线到线段相交

algorithm - 在两组不相交的点之间画一条线

javascript - 如何使用 lodash intersectionWith 在两个结构不同的数组中比较和查找具有相同值的相同属性?

python - Pandas:如果特定列不包含特定文本,则删除数据框中的行

java - 创建抛出编译器错误的对象列表

python - Numpy:对应于唯一坐标位置的值的平均值

python - 单行不带括号的打印列表

python - 在没有括号或其他符号的文本文件中写入列表或数组

python - 向量化 Numpy 中的操作

javascript - 将 id 从模板传递到 django 中的 View