Python进阶之利用+和*进行列表拼接

目录
  • 引言
  • 对序列使用+和*
  • 由列表组成的列表
  • 嵌套列表创建的陷阱
  • 总结

引言

python作为一款深受大家喜爱的语言,一直都在时代的风口浪尖吸引了很多的人学习。在我们学习python的过程中,有一个非常常见的语法,那就是利用+和*进行序列的拼接以及其他操作。但是孰不住这个操作存在一个陷阱,今天就带大家从使用+和*进行拼接出发认识一个大家非常容易犯的代码错误。话不多说我们开始吧。

对序列使用+和*

在编写python的过程中,我们默认python的序列是支持+和*的操作的。例如在对序列相加的过程中,+号两边的序列需要是相同类型的序列,python会为我们创建一个相同类型的序列作为拼接的结果。请看下面这个例子:

string_01 = 'abc'
string_02 = 'def'

print(string_01 * 5)
print(string_01 + string_02)

>>>abcabcabcabcabc
>>>abcdef

另外,我们还可以在列表中使用上述代码进行拼接与合并,如下所示:

list_01 = [i for i in range(3)]
list_02 = [i for i in range(4,7)]

print(list_01 * 3)
print(list_01 + list_02)

>>>[0, 1, 2, 0, 1, 2, 0, 1, 2]
>>>[0, 1, 2, 4, 5, 6]

在这个过程当中,python不会修改原有的序列而是会新开辟一个空间存储合并后或者拼接后的序列。

由列表组成的列表

在有些情况下,可能需要我们建立一个嵌套着几个列表的列表,例如需要我们建立一个用于存储员工信息的嵌套列表。请看下面的代码:

worker_information = [['Nan'] * 3 for i in range(3)]
print(worker_information)

>>> [['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]

注意:上述代码中利用了生成器表达式来完成,还不是很了解的小伙伴可以点击下方文章了解一下。 【python进阶】你还在使用for循环新建数组?生成器表达式帮你一行解决

当我们想要修改其中的一项时,只需要进行常规的赋值就可以了,如下所示:

worker_information[0][0] = '王刚'
worker_information[0][1] = '20岁'
print(worker_information)

>>>[['王刚', '20岁', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]

嵌套列表创建的陷阱

我们通过上述代码中的+和的应用使得我们快速创建了嵌套列表。但是,要注意当使用诸如an的表达式时,a不能是同一个引用。下面我们来看一个具体的例子来更好的说明这种情况,请看下面这段代码:

worker_information_bug = [['Nan'] * 3] * 3
print(worker_information_bug)

worker_information_bug[0][0] = '王刚'
print(worker_information_bug)

>>>[['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]
>>>[['王刚', 'Nan', 'Nan'], ['王刚', 'Nan', 'Nan'], ['王刚', 'Nan', 'Nan']]

程序出现了意想不到的结果,当我们改变嵌套列表中的一个元素时,所有列表的元素都发生了改变。下面这段代码也是典型的错误,如下:

row = ['Nan'] * 3
worker_information_bug_02 = []
for i in range(3):
    worker_information_bug_02.append(row)

print(worker_information_bug_02)

worker_information_bug_02[0][0] = '王刚'
print(worker_information_bug_02)

>>>[['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]
>>>[['王刚', 'Nan', 'Nan'], ['王刚', 'Nan', 'Nan'], ['王刚', 'Nan', 'Nan']]

上述两段代码的错误都是由于重复了同一个引用所导致的,在[['Nan'] * 3] 中我们建立了一个列表,但当这个结构被嵌套成[['Nan'] * 3] * 3时,其实我们只是在一个列表中放入了三个同一个列表的引用,而不是创建了三个列表。正确的做法应该如下:

worker_information_bug_02 = []
for i in range(3):
	# 每次循环都建立新的列表
    row = ['Nan'] * 3
    worker_information_bug_02.append(row)

print(worker_information_bug_02)

worker_information_bug_02[0][0] = '王刚'
print(worker_information_bug_02)

>>>[['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]
>>>[['王刚', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan'], ['Nan', 'Nan', 'Nan']]

在上述代码中,我们在每次循环都建立了新的列表,这能够保证我们的修改正常进行。

总结

在本文中,我们介绍了对列表使用+和*进行拼接以及在利用其不当的过程中,可能会导致的问题希望大家都能够理解并注意。

到此这篇关于Python进阶之利用+和*进行列表拼接的文章就介绍到这了,更多相关Python列表拼接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中字典列表中删除重复项

    要从字典列表中删除重复项: 使用字典推导来遍历列表. 使用每个 id 属性的值作为键,使用字典作为值. 使用 dict.values() 方法只获取唯一的字典. 使用 list() 类将结果转换为列表. list_of_dictionaries = [ {'id': 1, 'site': 'jiyik.com'}, {'id': 2, 'site': 'google.com'}, {'id': 1, 'site': 'jiyik.com'}, ] result = list( { diction

  • Python中的type与isinstance的区别详解

    目录 type()函数 isinstance()函数 Python中的type()函数和isinstance()函数是两个常用的类型判断函数,它们可以用来判断变量的类型,接下来让我们一起来看一下它们的用法. type()函数 type()函数用于获取一个变量的类型,它的语法是:type(变量). 调之后会返回变变量的类型,下面是一个简单的例子: 1.获取变量的类型 a = 123 b = "123" c = (123,) print(type(a)) # 输出<class 'in

  • Python进阶之列表推导与生成器表达式详解

    目录 内置序列类型 列表推导与生成器表达式 列表推导 生成器表达式 总结 在python学习的过程中,我们最先接触到的就是python的数组,元组,字典等基础类型,但很少有人深入讨论python的内置序列类型以及它们的高级使用姿势. 深度学习python的内置序列,不仅能让我们编写的API更加的易用简介,也能够更好的理解python中各种序列的特性. 在本文中,我们就来一起解锁python内置序列的高级用法,玩转pyhon序列. 内置序列类型 python中有很多的序列类型,主要可以分为以下两类

  • Python采集二手车数据的超详细讲解

    目录 数据采集 发送请求 明确需求: 解析数据 保存数据 总结 数据采集 XPath,XML路径语言的简称.XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.XPath主要用于解析XML文档,可以用来获取XML文档中某个元素的位置.属性值等信息.XPath可以用于XML文档解析.XML数据抽取.XML路径匹配等方面. 发送请求 首先,我们要进行数据来源分析,知道我们的需求是什么? 明确需求: 明确采集网站是什么? 明确采集数据是什么

  • python简单几步实现时间日期处理到数据文件的读写

    目录 正文 时间日期的处理 数据文件读写 # 数据库 正文 大家好,上一篇讲了如何创建python如何创建类,抽象类,访问限制的说明.今天说说python的相关技能,比如将时间日期的处理,数据文件的读写,以及数据库的简单操作. 时间日期的处理 python中时间处理主要使用的库是 datetime 1.datetime是内置模块,不需要安装,直接使用 import datetime 2.datetime里面有五个类: date类:表示日期的类 time类:表示时间的类 datetime类:表示时

  • 如何在Python 中使用 join() 函数把列表拼接成一个字符串

    目录 1.设置 end=’’ 2.拼接字符串(string) 3.举例 内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法. 问题:有一个列表,比如:letters=[‘a’,‘b’,‘c’],想要把列表的元素连续显示出来,应该怎么办? 解决办法: 1.设置 end=’’ 如何使Python中的print()语句运行结果不换行 的方法,设置 end=’’. 如下代码所示: letters=['a','b','c'] for letter in lette

  • 如何在Python 中使用 join() 函数把列表拼接成一个字符串

    目录 1.设置 end=’’ 2.拼接字符串(string) 3.举例 内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法. 问题:有一个列表,比如:letters=[‘a’,‘b’,‘c’],想要把列表的元素连续显示出来,应该怎么办? 解决办法: 1.设置 end=’’ 如何使Python中的print()语句运行结果不换行 的方法,设置 end=’’. 如下代码所示: letters=['a','b','c'] for letter in lette

  • Python实现列表拼接和去重的三种方式

    目录 列表拼接三种方式 方式一:简简单单的"+" 方法二:切片赋值 方式三:列表自带的extend() 列表去重的三种方式 利用集合set的特性 利用字典key的不可重复属性 利用index()获取到的是第一次出现的索引 列表拼接三种方式 列表拼接主要有以下三种方式: 最简单的使用"+"; 使用切片赋值的方法: 使用列表自带的extend方法 方式一:简简单单的"+" >>> list1 = [1,2,3] >>&g

  • Python 利用切片从列表中取出一部分使用的方法

    我想从列表中取出一部分拿来使用,可以创建切片,指定需要使用的第一个元素和最后一个元素的索引 使用例子,说明切片的使用 #创建一个数字列表,代表我有100页文章,然后进行分页显示 mage=list(range(1,101)) max_count=len(mage) #使用len()获取列表的长度,上节学的 n=0 while n<max_count: #这里用到了一个while循环,穿越过来的 print(mage[n:n+10]) #这里就用到了切片,这一节的重点 n=n+10 输出: [1,

  • Python利用字典和列表实现学生信息管理系统

    本文将利用Python中的字典和列表实现学生信息管理系统 文件的存放格式采用的是python自带的pickle模块,需要新建course.txt和student.txt供程序读写. 下面是示例代码 import pickle # 从文件中读取学生信息并返回 def readStudent(): with open("student.txt",'rb') as f: try: return pickle.load(f) #读取失败,说明读取的文件为空,返回空列表即可 except EOF

  • Python进阶之使用selenium爬取淘宝商品信息功能示例

    本文实例讲述了Python进阶之使用selenium爬取淘宝商品信息功能.分享给大家供大家参考,具体如下: # encoding=utf-8 __author__ = 'Jonny' __location__ = '西安' __date__ = '2018-05-14' ''' 需要的基本开发库文件: requests,pymongo,pyquery,selenium 开发流程: 搜索关键字:利用selenium驱动浏览器搜索关键字,得到查询后的商品列表 分析页码并翻页:得到商品页码数,模拟翻页

  • Python进阶学习之带你探寻Python类的鼻祖-元类

    Python是一门面向对象的语言,所以Python中数字.字符串.列表.集合.字典.函数.类等都是对象. 利用 type() 来查看Python中的各对象类型 In [11]: # 数字 In [12]: type(10) Out[12]: int In [13]: type(3.1415926) Out[13]: float In [14]: # 字符串 In [15]: type('a') Out[15]: str In [16]: type("abc") Out[16]: str

  • python进阶从青铜到王者一定会用上的Python技巧

    目录 1.如何判断一个列表中的数值是否全部小于某个数 2.如何对列表中的字符串按照特定要求进行排序 3.如何实现按照键或者数值对字典进行排序 4.怎么将列表中的数字转换成字符串 5.如何判断列表中的元素是否都属于一个类型 6.列表怎么反转呢 7.如何从可迭代对象中随机选择一个元素 9.筛选出以元音字母开头的字符串 10.创建一个计数字典的方法 每个案例都有两种解决方法,第一种方法相对小白,第二种方法则是属于有经验的高手写法. 下面有请青铜和王者两位选手进场.各位同学请对号入座~ 1.如何判断一个

  • python+opencv实现论文插图局部放大并拼接效果

    目录 前言 cv2.rectangle() 函数 cv2.resize() 函数 np.hstack() 和 np.vstack() 函数 实现局部框定放大拼接 总结 前言 在制作论文插图时,有时要求将图片的局部放大来展示细节内容,同时将放大图拼接在原图上以方便观察对比. 当然直接利用电脑自带的画图软件或者别的软件也可以很方便地实现,但是如果碰到多个算法处理一张图片后多张图片进行对比就不太方便了,这里主要贴一下 python 代码的实现. cv2.rectangle() 函数 cv2.recta

  • Python全栈之字符串和列表相关操作

    目录 1. format格式化_填充符号使用 1.1 format格式化 1.2 format的填充符号的使用 2. 字符串相关的方法 3. 列表的相关操作 4. 列表的相关函数 5. 深浅拷贝 小提示: 6. 小练习 (1)字符串相关练习问题: (2)列表相关练习问题: 总结 1. format格式化_填充符号使用 1.1 format格式化 字符串的格式化format # (1)顺序传参 """{}是format中的占位符""" strvar

随机推荐