Python 替换列表 list 及字符串中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 替换列表 list 及字符串中的元素相关的知识,希望对你有一定的参考价值。

参考技术A 使用str.replace() 替换字符串中的元素

使用循环替换列表中单个元素

使用循环替换列表中的多个元素

Python list列表全部操作方法

文章目录

一. 介绍

1. 介绍

  1. 列表是 Python 中最基本的数据结构。

  2. 列表中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。

  3. 列表都可以进行的操作包括索引,切片,加,乘,检查成员。

  4. 此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。

  5. 列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。

  6. 列表的数据项不需要具有相同的类型

  7. list列表的本质是一种有序的集合

二. 创建列表

语法: 列表名 = [元素1,元素2,元素3…]
说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数
举例:

#创建空列表
list1 = []
#格式化
list1 = list()

#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)
#结果
[10, 20, 30, 10]

注意:在列表中元素的数据类型可以不同(灵活性),列表中的元素类型可以是任意python中的基本数据类型或者是自定义的数据类型

list3 = [33, "good", True, 10.32]
print(list3)
#结果
[33, 'good', True, 10.32]

补充:
空列表可以简单地通过两个中括号进行表示([]),里面什么东西都没有,但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以用下面的方法,用某一个具体的值代替进行创建列表:

>>> list_empty = [0]*10
>>> list_empty
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这样就生成了一个包括10个0的列表。然而,有时候可能会需要一个值来代表空,意味着没有在里面放置任何元素。这个时候就需要使用None。None 是一个Python的内建值,它的确切含意是"这里什么也没有"。因此,如果想初始化个长度为10的列表,可以按照下面的例子来实现:

>>> list_empty = [None]*10
>>> list_empty
[None, None, None, None, None, None, None, None, None, None]

这样就可以再去对list的各个元素进行初始化了。

三. 列表元素的访问

1. 列表的取值

功能:访问list列表中元素值
语法:列表名[索引]:list1[index]
(index取值范围(0,len(list1)),len(list)表示列表的长度)
举例:

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])

注意:当索引值大于len(list4)-1的时候,会出现以下错误:

print(list4[5])
IndexError: list index out of range

这个错误就是下标越界【下标超出了可表示的范围】

2. 列表元素的替换

功能:更改列表元素的值
语法:列表名[下标] = 值:list1[index] = 值
举例:

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])

四. 列表操作

1. 列表组合

语法: 列表3 = 列表1 + 列表2
将列表1和列表2中的元素取出,组成一个新的列表并返回。
举例:

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)
#结果
[1, 2, 3, 'hello', 'yes', 'no']

2. 列表重复

语法: 列表2 = 列表1 * n
举例:

list1 = [1, 2, 3]
list2 = list1 * 3
print(list2)
#结果
[1, 2, 3, 1, 2, 3, 1, 2, 3]

3. 判断元素是否在列表中

语法:元素 in 列表
若存在则返回True,否则返回False
举例:

list1 = [1, 2, 3]
print(1 in list1)
#结果
True

4. 列表截取

语法:list1[start:stop:step]
参数一:表示截取的开始下标值,默认为0
参数二:表示截取的结束下标值,默认为列表末尾
参数三:表示截取的步长,默认为1,可指定
注意:

  1. 截取区间[start, end),左闭右开
  2. list1[::-1]可以获得倒叙的列表
list1 = ["hello",2,True,False,3.14]
list2 = list1[:]
list3 = list1
print(list1[0:3:2])
print(list1[::-1])
print(list1[:3:-1])
print(list1[3::-1])
#结果
['hello', True]
[3.14, False, True, 2, 'hello']
[3.14]
[False, True, 2, 'hello']

补充:
遍历 [start,end),间隔为 span,当 span>0 时顺序遍历, 当 span<0 时,逆着遍历。start 不输入则默认为 0,end 不输入默认为长度。

>>> l = [i for i in range(0,15)]
>>> print(l[::2])
[0, 2, 4, 6, 8, 10, 12, 14]
  1. start:起始索引,从0开始,-1表示结束
  2. end:结束索引
  3. step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值

举例说明:

>>> a=[1,2,3,4]
>>> b='abcdef'
>>> print(a[1:2])
[2]
>>> print(b[2:])
cdef
>>> print(a[::-1])
[4, 3, 2, 1]
>>> print(b[::-1])
fedcba

如果不是同样追求语法细节的“老鸟”,这段代码的作用恐怕不能第一眼看出来,实际上为了更好的体现 pythonic 的代码是充分利用 python 库里的 reversed() 函数。

>>> print(list(reversed(a)))
[4, 3, 2, 1]
>>> print(list(reversed(b)))
['f', 'e', 'd', 'c', 'b', 'a']

5. Python 中的 [:-1] 和 [::-1]

举例说明:

a='python'
b=a[::-1]
print(b) #nohtyp
c=a[::-2]
print(c) #nhy
#从后往前数的话,最后一个位置为-1
d=a[:-1]  #从位置0到位置-1之前的数
print(d)  #pytho
e=a[:-2]  #从位置0到位置-2之前的数
print(e)  #pyth

用法说明:

b = a[i:j]   # 表示复制a[i]到a[j-1],以生成新的list对象

a = [0,1,2,3,4,5,6,7,8,9]
b = a[1:3]   # [1,2]

# 当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
# 当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
# 当i,j都缺省时,a[:]就相当于完整复制一份a

b = a[i:j:s]    # 表示:i,j与上面的一样,但s表示步进,缺省为1.
# 所以a[i:j:1]相当于a[i:j]

# 当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
# 所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。

6. 列表遍历:

# 正序遍历:
list01 = ["Googl",'Runoob',1997,2002]
for i in range(len(list01)):  #用法1    
    print(list01[i])
for item in list01:  #用法2    
    print(item)
    
# 反向遍历
for i in range(len(list01) - 1, -1, -1):    
    print(list01[i])

结果:

Googl
Runoob
1997
2002
Googl
Runoob
1997
2002
2002
1997
Runoob
Googl

7. 二维列表

语法:列表 = [列表1,列表2,列表3,… ,列表n]
说明:列表中元素可以是Python的基本数据类型,也可以是自定义的数据类型。
当列表中存放的元素刚好又是列表的时候,我们可以称这个列表为二维列表
举例:

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

二维列表取值(访问):
语法:列表名 [下标1][下标2]
说明:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素
举例:

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

五. 列表的方法

1. list.append(元素或列表)

功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
说明:append()中的值可以是列表也可以是普通元素
举例:

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

2. list.extend(列表)

功能:在列表的末尾一次性追加另外一个列表中的多个值
说明:extend()中的值只能是列表或元组【一个可迭代对象(可加在for循环之后的)】,打碎可迭代对象之后的元素再加入列表中,不能是元素
举例:

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

3. list.insert(下标值, 元素或列表)

功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延
说明:插入的数据可以是元素也可以为列表
举例:

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

4. list.pop(下标值)

功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据
说明:此处会返回删除数据
举例:

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

5. list.remove(元素)

功能:移除列表中的某个元素第一个匹配结果
举例:

>>> list1 = [1, 2, 3]
>>> list1.remove(2)
>>> print(list1)
[1, 3]

6. list.clear()

功能:清除列表中所有的数据
举例:

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

7. list.index(x[, start[, end]])

功能:从指定的范围的列表中找出某个值(object)第一匹配的索引值
说明:查询范围[start,stop),若不指定范围,则默认是整个列表。
注意:若在列表中找不到这个元素,则会报错。
举例:

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

8. list.count(元素)

功能:查看元素在列表中出现的次数
举例:

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

9. len(list)

功能: 获取列表元素的个数(长度)
举例:

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

10. max(list)

功能:获取列表中的最大值
举例:

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

11. min(list)

功能:获取列表中的最小值
注意:比较的是ASCII值
举例:

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1

12. list.reverse()

功能: 将列表中的元素倒叙,在原列表进行操作,不返回新的列表。
举例:

list1 = ["hello1","good1","nice","good","hello"]
print(id(list1))
list1.reverse()
print(list1)
print(list1.reverse())
print(id(list1))
#结果
2158912823880
['hello', 'good', 'nice', 'good1', 'hello1']
None
2158912823880

13. list.sort()

list.sort(reverse=False)
功能:将list中的元素进行升序排列【默认reverse=False】,当reverse为True的时候,降序排列。
注意:在原列表进行排序,不返回新的列表
举例:

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]

14. 赋值拷贝

语法:

list1 = [1, 2, 3]
list2 = list1

特点:共用同一块内存空间,更改其中任意一个变量,其他变量都会受到影响。
注意:赋值拷贝为引用拷贝,类似于快捷方式

list1 = [1,2,3,4,[1,2,3,4]]
list2 = list1
print(id(list1))
print(id(list2))
list2[-1] = True
print(list2)
print(list1)
#结果
1585735384392
1585735384392
[1, 2, 3, 4, True]
[1, 2, 3, 4, True]

15. 浅拷贝 list.copy()

语法:

list1 = [1, 2, 3]
list2 = list1.copy()

注意:只适用于一维列表;浅拷贝为一维内存拷贝,开辟了新的内存空间
不完全内存拷贝,对于一维列表重新开辟了一块内存空间,但若出现二维列表的情况下,因为二维列表存放在一维列表中存放的是列表的地址,因此,若出现二维列表相当于间接的引用了同一块内存区域(即二维列表还是共用内存)。

举例:

>>> list1 = [1, 2, 3, 1]
>>> list2 = list1.copy()
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list2))
4314525320
>>> print(id(list1))
4314524808

import copy
list1 = [1,2,3,4,[1,2,3,4]]
list3 = list1.copy()
list3[-1][-1] = True
print(id(list1))
print(id(list3))
print(list1)
print(list3)
#结果
#一维存储地址不同
1614254026312
1614254024904
#二维存储地址相同,伴随发生改变
[1, 2, 3, 4, [1, 2, 3, True]]
[1, 2, 3, 4, [1, 2, 3, True]]

16. 深拷贝 copy.deepcopy()

语法:

impo copy
list2 = copy.deepcopy(list1)

说明:完全内存拷贝,相当于将list1中的所有列表元素重新复制了一份,对于多维的也重新开辟了新的内存空间
举例:

list1 = [1,2,3,4,[1,2,3,4]]
list4 = copy.deepcopy(list1)
list4[-1][-1] ="hello"
print(id(list1))
print(id(list4))
print(list1)
print(list4)
#结果
#一维存储地址不同
2215608102408
2215608101128
#二维存储地址不同,不伴随发生改变
[1, 2, 3, 4, [1, 2, 3, 4]]
[1, 2, 3, 4, [1, 2, 3, 'hello']]

17. list(元组)

功能:将元组转为列表

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]

六. 列表的遍历

1. 使用for循环遍历列表

语法:

for 变量名 in 列表 :
​	语句

功能:for循环主要用于遍历列表
遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值
说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止
举例:

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
...     print(item)
... 
hello
78
你好
good

2. 使用while循环遍历列表[使用下标循环]

语法:

下标 = 0
while 下标 < 列表的长度:
​ 语句
​ 下标 += 1

3. 同时遍历下标与元素

语法:

for 下标,变量 in enumerate(列表):
	语句

举例:

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
...     print(index, item)
... 
0 hello
1 78
2 你好
3 good

enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

4. 列表推导式

列表推导式书写形式:

[表达式 for 变量 in 列表]
或者
[表达式 for 变量 in 列表 if 条件]

七. 参考链接

  1. Python列表(list)的相关操作及方法
  2. Python3 List index()方法:https://www.runoob.com/python3/python3-list.html

以上是关于Python 替换列表 list 及字符串中的元素的主要内容,如果未能解决你的问题,请参考以下文章

python删除list列表多个指定位置中的元素

python替换list元素,列表alist中有很多0数字,要替换成1

python列表

python -- 优雅地删除字符列表中的空字符及None元素

python列表list[ ]及列表函数

怎么查找python列表中元素的位置