Python3 list不去重合并

简介: 本文仅讨论Python3(以Python3.7.2版本来测试实验结果)环境下list(数组)元素不去重合并的问题。以下给出4种解决方案,按顺序详细描写:1. 直接相加。2. 使用 extend() 函数整体合并。3. 使用 append() 逐一添加元素。4. 使用数组切片的方式。

1. 直接相加


直接相加(+)只能对同类型起作用,即只能用list加list。

range1=list(range(0,3))
print(range1)  #[0, 1, 2]
range2=list(range(8,10))
print(range2)  #[8, 9]
print(range1+range2)  #[0, 1, 2, 8, 9]


在此基础上衍生出的 += 符号的用法,实际上下一节的 extend() 函数类似,因此是可以添加其他可迭代类型对象的:

range1=list(range(0,3))
print(range1)
range2=list(range(8,10))
print(range2)
range1+=range2
print(range1)  #[0, 1, 2, 8, 9]
set1=('factor1','factor2')
range1+=set1
print(range1)  #[0, 1, 2, 8, 9, 'factor1', 'factor2']


原理可以参考python3:序列的 +,+=,和extend的适用场景以及区别_上海 彭彭-CSDN博客一文,大致来说,就是在list使用+=运算符时会调用魔法函数__iadd__,这个函数就是转而直接调用extend()函数来实现该功能。


2. 使用 extend() 函数


list对象的extend()函数以一个可迭代的对象为入参,将入参对象中的元素全部加到list对象中。

入参可以是列表、元组、集合、字典等。如果是字典,将以其键加到list对象中。

函数的详细介绍可参考:Python3 List extend()方法 | 菜鸟教程


range1=list(range(0,3))
print(range1)
range2=list(range(8,10))
print(range2)
range1.extend(range2)
print(range1)  #[0, 1, 2, 8, 9]
dict1={'key1':100,'key2':200}
range1.extend(dict1)
print(range1)  #[0, 1, 2, 8, 9, 'key1', 'key2']


还是参考python3:序列的 +,+=,和extend的适用场景以及区别_上海 彭彭-CSDN博客一文,extend()函数的原理就是迭代入参的每个元素,使用下一节将介绍的append()方法逐一加到原对象末尾。


3. 使用 append() 函数


list对象的 append() 函数是将入参作为一个元素加到原对象末尾。所以如果想要将新对象的全部元素加到原对象中,需要对它的每个元素都应用 append() 函数。


#将入参与原对象合并,即对其每个元素都应用 `append()` 函数,相当于 `extend()` 函数
range1=list(range(0,3))
print(range1)
range2=list(range(8,10))
print(range2)
for v in range2:
    range1.append(v)
print(range1)  #[0, 1, 2, 8, 9]
#将入参作为一个元素加到原对象中
range1.append(range2)
print(range1)  #[0, 1, 2, [8, 9]]


4. 使用数组切片


range1=list(range(0,3))
print(range1)
range2=list(range(8,10))
print(range2)
range1[len(range1):len(range1)+len(range2)]=range2
print(range1)  #[0, 1, 2, 8, 9]


相关文章
|
1月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
5月前
|
数据处理 Python
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
177 1
|
1月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
|
2月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
|
3月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
61 7
|
3月前
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
45 0
【python】python指南(五):静态类型注解之List
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
34 0
|
4月前
|
Python
|
3月前
|
JSON 算法 算法框架/工具
【python】python指南(十二):Json与dict、list互相转换
【python】python指南(十二):Json与dict、list互相转换
22 0
|
4月前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
58 1
下一篇
无影云桌面