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]


相关文章
|
9月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
675 0
|
9月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
749 0
|
数据采集 NoSQL 关系型数据库
Python爬虫去重策略:增量爬取与历史数据比对
Python爬虫去重策略:增量爬取与历史数据比对
|
9月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
383 4
|
索引 Python
Python错误 - 'list' object is not callable 的问题定位与解决
出现编程问题并不可怕,关键在于是否可以从中学习与成长。遇到'list' object is not callable这样的错误,我们不仅需要学会应对,更需要了解其背后的原因,避免类似的问题再次出现。记住,Python的强大功能和灵活性同时也意味着我们需要对其理解更准确,才能更好的使用它。
1686 70
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
690 14
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
415 9
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
1646 10

热门文章

最新文章

推荐镜像

更多