python - 从 python 中的列表列表中删除列表项

标签 python list loops nested

我有一个字符列表:

Char_list = ['C', 'A', 'G']

和列表列表:

List_List = [['A', 'C', 'T'], ['C', 'A', 'T', 'G'], ['A', 'C', 'G']]

我想从 List_List 中相应索引 i 的列表中删除每个 Char_list[i]

输出必须如下所示:

[['A','T'], ['C', 'T', 'G'], ['A', 'C']] 

我正在尝试的是:

for i in range(len(Char_list)):
    for j in range(len(List_List)):
        if Char_list[i] in List_List[j]:
            List_List[j].remove(Char_list[i])
print list_list

但从上面的代码中,每个字符都从所有列表中删除。

如何只从 List_list 中的相应列表中删除 Char_list[i]

最佳答案

不使用显式索引,而是将您的两个列表zip 在一起,然后应用列表理解来过滤掉每个位置不需要的字符。

>>> char_list = ['C', 'A', 'G']
>>> list_list = [['A', 'C', 'T'], ['C','A', 'T', 'G'], ['A', 'C', 'G']]
>>> [[x for x in l if x != y] for l, y in zip(list_list, char_list)]
[['A', 'T'], ['C', 'T', 'G'], ['A', 'C']]

关于python - 从 python 中的列表列表中删除列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441033/

相关文章:

python - 用 Python 模拟操纵杆

python - 如果列表中的数字小于十(在 Python 中),则在数字前面放置一个 0

python - 没有过滤器的列表理解

python - 将包含多维 numpy 数组和一维列表的元组存储到 HDF5

java - for 循环的问题,接收和利用输入

python - Python 是否有一种方法可以在不显式分配计数器变量的情况下重复给定的次数?

python - 使用 xml.etree.ElementTree 解析 XML 文件时出现问题

python - 无法导入 cv2

python - 理解 Python 中的 setdefault

C++ 性能 : use getter in loop or save it to a variable first