将列表分为两部分?

1 投票
2 回答
77 浏览
提问于 2025-04-14 18:08

经过我的分析,我会得到一个列表,其中每个测量值都会出现两次。也就是说,可能会有重复的测量(比如1这个值在这里被测量了两次)。

example_list = [1, 2, 3, 4, 1, 1, 2, 1, 3, 4]

我想要的结果是:

outcome = [1, 2, 3, 4, 1]

顺序不重要,只要每个测量值只出现一次就可以。

因为可能会有重复的测量,所以我不能使用 unique() 这个方法。

有没有什么办法可以有效地将列表缩减一半,让每个测量值只出现一次呢?

补充说明:来自重复测量的列表元素会出现4次(在这个例子中)或更多次,而来自双重测量的元素会出现两次。

2 个回答

4

如果你把example_list这个列表排序了,你就可以从中每隔一个选一个元素,来创建一个新的列表:

example_list = [1, 2, 3, 4, 1, 1, 2, 1, 3, 4]
outcome = sorted(example_list)[::2]
4

如果你不知道列表中哪些元素需要被丢弃,那么一个方法就是使用 Counter,然后把每个元素的数量减半:

from collections import Counter

c = Counter(example_list)
for key in c:
    c[key] //= 2
lst = list(c.elements())

以你的示例输入为例,lst 的值将是 [1, 1, 2, 3, 4]

撰写回答