python提取list中的元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python提取list中的元素相关的知识,希望对你有一定的参考价值。
参考技术A 1、提取某个或某几个元素ki = [1, 3, 4, 5, 6, 8]
print(ki[2])
print(ki[2:4])
结果:
4
[4, 5]
2、提取所有元素
ki = [1, 3, 4, 5, 6, 8]
for i in range(0, len(ki)):
print(ki[i])
结果:
1
3
4
5
6
8
3、随机提取元素
import random
ki = [1, 3, 4, 5, 6, 8]
mk = random.sample(ki, 4)
print(mk)
结果:
[3, 4, 8, 1]
我想为列表中的每个元素提取索引[重复]
【中文标题】我想为列表中的每个元素提取索引[重复]【英文标题】:I would like to extract indexes for each element in a list [duplicate] 【发布时间】:2020-11-20 08:41:42 【问题描述】:我有两个列表:
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]
【问题讨论】:
【参考方案1】:最简单的方法是再创建一个列表并附加到该列表
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]]
【讨论】:
【参考方案2】:你可以把它写成列表推导式。
>>> 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]]
【讨论】:
【参考方案3】:你可以把它放在另一个列表理解中:
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)
【讨论】:
【参考方案4】:你可以使用一个简单的列表推导......像
[[j for j,x in enumerate(list2) if x == i] for i in list1]
【讨论】:
我的错。。我点击了发布按钮,意识到已经发布了另一个答案。以后我会注意的。以上是关于python提取list中的元素的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Python 代码为列表中的所有元素提取相同的数据?