我有两份清单:
list1 = ["A", "B", "C", "D", "E"]
list2 = ["A", "A", "C", "B", "E", "A", "C", "B", "E", "D"]
我想为每个元素创建一个索引列表列表,如下所示:
[[0,1,5], [3, 7], [2, 6], [9], [4,8]]
我试过这个:
for i in list1:
list3 = [j for j,x in enumerate(list2) if x == i]
print(list3)
但我得到了这些不同的结果:
[0, 1, 5]
[3, 7]
[2, 6]
[9]
[4, 8]
你可以把它放在另一个列表理解中:
list1 = ["A", "B", "C", "D", "E"]
list2 = ["A", "A", "C", "B", "E", "A", "C", "B", "E", "D"]
list3 =[[j for j,x in enumerate(list2) if x == i] for i in list1]
print(list3)
你可以把它写成一个列表理解。
>>> list3 = [[j for j,x in enumerate(list2) if x == i] for i in list1]
>>> list3
[[0, 1, 5], [3, 7], [2, 6], [9], [4, 8]]
但是,您可以通过仅对list2
迭代一次而不是对list1
的每个元素迭代一次来提高时间复杂度。
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for idx, el in enumerate(list2):
... d[el].append(idx)
...
>>> res = [d[el] for el in list1]
>>> res
[[0, 1, 5], [3, 7], [2, 6], [9], [4, 8]]
最简单的方法是再创建一个列表并附加到该列表中
In [28]: list1 = ["A", "B", "C", "D", "E"]
...: list2 = ["A", "A", "C", "B", "E", "A", "C", "B", "E", "D"]
In [29]: data = []
In [30]: for i in list1:
...: list3 = [j for j,x in enumerate(list2) if x == i]
...: data.append(list3)
...:
In [31]: data
Out[31]: [[0, 1, 5], [3, 7], [2, 6], [9], [4, 8]]
或
In [32]: data = []
In [33]: for i in list1:
...: data.append([j for j,x in enumerate(list2) if x == i])
In [35]: data
Out[35]: [[0, 1, 5], [3, 7], [2, 6], [9], [4, 8]]
问题内容: 我想做一些类似于此处NumPy数组的操作,更改不在索引列表中的值,但不完全相同。 考虑一个数组: 我知道我可以通过索引列表访问其元素,例如: 但是我还需要访问那些 不在列表中的元素。天真地,这是: 正确的方法是什么? 问题答案: In [170]: a = np.array([0.2, 5.6, 88, 12, 1.3, 6, 8.9]) In [171]: idx=[1,2,5] I
问题内容: 如果您在python中有一个列表,并且想要将索引1、2和5的元素提取到新列表中,您将如何做? 这是我的做法,但我并不十分满意: 有没有更好的办法? 更一般而言,给定一个索引元组,即使使用重复,您将如何使用该元组从列表中提取相应的元素(例如,元组产生)。 问题答案: 也许使用这个:
我有一份我正在处理的项目清单。我正在寻找初始列表中的特定项目,并希望在遍历列表时从该列表中删除已找到的项目。我遍历列表使用 有没有一种方法可以在不操纵两个列表的情况下做到这一点?
为简单起见,我有2个字符串列表,我需要将字符串连接到一个列表中并创建另一个列表。例如—— 我想要输出为 我可以使用正则for循环来实现这一点。但不知道如何继续使用java8 我试图让自己思考nJava8:-)
问题内容: 我正在尝试获取numpy数组中所有重复元素的索引,但是我目前发现的解决方案对于大型(> 20000个元素)输入数组(大约需要9秒钟的时间),实际上效率很低。这个想法很简单: 是一个时间戳()的numpy数组,我们要从中提取重复时间戳的索引 是一个numpy数组,其中包含在中重复的所有时间戳 是一个django QuerySet(可以轻松转换为列表),其中包含一些Record对象。我们要
我有一个数据框,其中一些单元格包含多个值的列表。我不想在一个单元格中存储多个值,而是希望扩展dataframe,以便列表中的每个项都有自己的行(在所有其他列中都有相同的值)。因此,如果我有: 如何转换为长格式,例如: 索引并不重要,可以将现有列设置为索引,而最终的顺序并不重要。