专业编程基础技术教程

网站首页 > 基础教程 正文

列出列表中所有元素(去重)(取出列表中的所有元素)

ccvgpt 2025-04-05 17:11:02 基础教程 14 ℃

方法1:直接使用集合去重(无序)

n = [3, 5, 2, 5, 3, 7]
unique_list = list(set(n))
print(unique_list)  # 输出可能为 [2, 3, 5, 7](集合无序)

特点

  • 最简单直接,但不保留原始顺序

方法2:利用字典键去重(Python 3.7+ 保留顺序)

n = [3, 5, 2, 5, 3, 7]
unique_list = list(dict.fromkeys(n))
print(unique_list)  # 输出 [3, 5, 2, 7](保留首次出现的顺序)

特点

列出列表中所有元素(去重)(取出列表中的所有元素)

  • 利用字典键的唯一性,保留元素首次出现的顺序

方法3:列表推导式去重(保留顺序)

n = [3, 5, 2, 5, 3, 7]
unique_list = []
[unique_list.append(x) for x in n if x not in unique_list]
print(unique_list)  # 输出 [3, 5, 2, 7]

特点

  • 显式检查元素是否已存在,保留顺序但效率较低(适合小型列表)。

方法4:使用sorted排序去重(有序但不保留原始顺序)

n = [3, 5, 2, 5, 3, 7]
unique_sorted = sorted(set(n), key=n.index)
print(unique_sorted)  # 输出 [3, 5, 2, 7](按原始顺序排序)

特点

  • 先转集合去重,再按原始索引排序恢复顺序。

方法对比

方法

保留顺序

时间复杂度

适用场景

set()

O(n)

快速去重,无需顺序

dict.fromkeys()

O(n)

需保留顺序(Python 3.7+)

列表推导式

O(n^2)

小型列表

sorted(set(), key=)

O(n log n)

需排序且保留首次出现


最终建议

  • 需要保留顺序 → 用 dict.fromkeys(n)
  • 无需顺序且追求高效 → 直接 set()
  • 旧版本Python或兼容性要求 → 列表推导式或循环检查

最近发表
标签列表