【Python基础】day2——列表增删改查、切片、内置方法(超详细)

 


Python 列表(List)简介

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

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

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

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

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

Python中的列表同shell中的数组

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

name1 = 'one'
name2 = 'two'
name3 = 'three'
name4 = 'four'
name5 = 'five'

a=[name1,name2,name3,name4,name5]

print(a)

执行结果:

['one', 'two', 'three', 'four', 'five']

列表的增删改查

列表中,元素的下标,叫做索引,列表的索引(下标)是从0开始的

shell中,数组的下表0到5,在python同意为,列表索引0到5

查——切片

语法:print(取值起点:取值终点:步长)

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------

a=['zhangsan','lisi','wangwu','xiaohu']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

print(a[1:3])

结果:

['lisi', 'wangwu']

从结果上,我们可以看出,结果只去了,列表中的第二个值和第三个值,所以,可以总结出,列表的取值规则是取前不取后

相当于[1:3)

切片取列表中的第二个元素,到最后一个元素的方法:不写后面的索引(下表)

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------

a=['zhangsan','lisi','wangwu','xiaohu']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

#print(a[1:3])

print(a[1:])

结果:

['zhangsan', 'lisi', 'wangwu', 'xiaohu']

切片从第三个元素取到倒数第二个元素的方法:

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


name1 = 'zhangsan'
name2 = 'lisi'
name3 = 'xiaohu'
name4 = 'ligang'
name5 = 'sanpang'

a=['zhangsan','lisi','wangwu','xiaohu']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

#print(a[1:3])

print(a[0:-1])

结果:

['zhangsan', 'lisi', 'wangwu']

总结上面两种常用的数组取值方式,就是想取到列表最后一个索引对应的值,:冒号后面就不写;如果想取到列表最后一个值,就在:冒号后面写-1

切片中的步长——每隔多少取一个值

顺序取值

  • 示例一:从左到右一个一个取值
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------

a=['one','two','three','four','five','six']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

#print(a[1:3])

print(a[0::2])
['one', 'three', 'five']

倒叙取值

默认的列表的取值方式是从左向右取值,但是,如果我现在需要从由往左取值的话,步长就为-1

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------

a=['one','two','three','four','five','six']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

#print(a[1:3])

print(a[5::-1])

结果:

['six', 'five', 'four', 'three', 'two', 'one']

注意,因为我们现在需要做的是倒叙的取出数值,我们的取值起点,也就是列表的索引就不能是0了,二应该是倒叙的最开始一个索引值

上面采用的是写起点不写终点的方式,当然我们可以采用写终点不写起点的方式:

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------

a=['one','two','three','four','five','six']
#a=[name1,name2,name3,name4,name5]
#print(a[3])

#print(a[1:3])

print(a[:0:-1])

结果:

['six', 'five', 'four', 'three', 'two']

增——append、insert

  • append是默认在列表的最后追加

示例:

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']

print(list_A)

list_A.append('yuyang')

print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
  • insert可以指定位置进行追加
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']

print(list_A)

list_A.append('yuyang')

print(list_A)

list_A.insert(1,'yuyang')

print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']

修改

  • 切换单个列表中的元素

示例:

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']

print(list_A)

list_A.append('yuyang')

print(list_A)

list_A.insert(1,'yuyang')

print(list_A)

list_A[1]

print(list_A[1])

list_A[1]='007'

print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
  • 切换多个列表中的元素
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']

print(list_A)

list_A.append('yuyang')

print(list_A)

list_A.insert(1,'yuyang')

print(list_A)

list_A[1]

print(list_A[1])

list_A[1]='007'

print(list_A)

list_A[1:3]=['one','two']

print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']

删除——remove、pop、del

  1. remove是列表的内置方法,内置方法的意思就是可以直接用列表.在pycharm中直接取到这个方法

remove语法示例:

  • 语法:列表.remove(‘要删除的元素’)
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang']

remove可以删除一个整体,但是不能同时产出列表中的多个元素

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

list_A.append(['three','four'])
print(list_A)

list_A.remove(['three','four'])
print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang', ['three', 'four']]
['one', 'two', 'wangwu', 'yuyang']

但是如果不是将three和four两个元素放在列表中,相当于一个整体,然后去删除的话,就会报错

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

list_A.append('three','four')
print(list_A)

list_A.remove('three','four')
print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
Traceback (most recent call last):
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
  File "K:/python_scripts/study_scripts/daily/three_day/list_method.py", line 28, in <module>
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
    list_A.append('three','four')
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
TypeError: append() takes exactly one argument (2 given)
['one', 'two', 'wangwu', 'yuyang']

pop语法示例:

  • pop功能是根据列表的索引删除元素
  • 语法:列表.pop(‘要删除元素的索引’)
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

list_A.pop(1)
print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang']
['one', 'wangwu', 'yuyang']
  • 使用pop根据列表中元素的索引删除元素,可以将删除的元素赋值给变量,示例:
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

list_B=list_A.pop(3)
print(list_A)
print(list_B)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu']
yuyang

del语法示例:

  • 语法:del 列表[元素的索引]
  • 语法:del 列表
    • 意思是从内存中直接删除这个列表,注意,不是将列表置空!
    • 通过这种方式删除后的列表,再去print 列表,会报错
#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['zhangsan','lisi','wangwu']
print(list_A)

list_A.append('yuyang')
print(list_A)

list_A.insert(1,'yuyang')
print(list_A)

list_A[1]
print(list_A[1])

list_A[1]='007'
print(list_A)

list_A[1:3]=['one','two']
print(list_A)

list_A.remove('zhangsan')
print(list_A)

list_B=list_A.pop(3)
print(list_A)
print(list_B)

del list_A[0]
print(list_A)

结果:

['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'yuyang', 'lisi', 'wangwu', 'yuyang']
yuyang
['zhangsan', '007', 'lisi', 'wangwu', 'yuyang']
['zhangsan', 'one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu', 'yuyang']
['one', 'two', 'wangwu']
yuyang
['two', 'wangwu']

内置方法

count()——统计某个元素在列表中出现的次数

示例:

#---------------------
# AUTHOR : yuyang4_m
# DATE : 2020/1/22
#----------------------


list_A=['to','be','or','not','to','be'].count('to')
print(list_A)

结果:

2

extend()——合并列表B到列表A中

示例:

a=[1,2,3]
b=[4,5,6]
a.extend(b)
print(a)
print(b)

结果:

[1, 2, 3, 4, 5, 6]
[4, 5, 6]

index——找到列表中某个元素的索引值

示例:

a=['zhangsan','yuyang','zhangsan','lisi','yuyang']
print(a.index('yuyang'))

结果:

1

如果该元素在列表中存在重复的多个的话,index默认取到的是第一个该元素在列表中的索引值

如果列表中存在多个相同元素,要取到第几个该元素的索引值的方法——index配合切片

a=['zhangsan','yuyang','zhangsan','lisi','yuyang']
one=a.index('yuyang')
print(one)
b=a[one+1:]
print(b)
two=b.index('yuyang')
print(two)
print(one+two)

结果:

1
['zhangsan', 'lisi', 'yuyang']
2
3

最终通过结果可以看出,列表中第二个'yuyang'元素的位置是3

对于列表中重复元素取第二个该元素位置使用的场景例子是,我需要将第二个该元素的名字修改成其他元素。

reverse——将列表的顺序倒置(列表倒叙)

示例:

a=['one','two','three','four','five','six']
a.reverse()
print(a)

结果:

['six', 'five', 'four', 'three', 'two', 'one']

sort()——排序

示例

x=[4,6,2,5,1,9]
x.sort()
print(x)

结果:

[1, 2, 4, 5, 6, 9]

示例二:

x=[4,6,2,5,1,9]
x.sort()
x.reverse()
print(x)
            上下二者等同
x=[4,6,2,5,1,9]
x.sort(reverse=True)
print(x)

结果:

[9, 6, 5, 4, 2, 1]

示例三:对字符串排序

a=['one','two','three','four','five','six']
a.sort()
print(a)

结果:

['five', 'four', 'one', 'six', 'three', 'two']

IN、NOT IN可以查看该元素在列表中是否存在

示例:

a=['one','two','three','four','five','six']
# a.sort()
print('one' in a)
print('one' not in a)

结果:

True
False

Process finished with exit code 0

clear()——列表清空

示例:

a=['one','two','three','four','five','six']
# a.sort()
print(a)
print(a.clear())

结果:

['one', 'two', 'three', 'four', 'five', 'six']
None

Process finished with exit code 0

列表身份验证——验证a是否是列表

In [6]: a=[1,2,3]

In [7]: print(a)
[1, 2, 3]

In [8]: type(a)
Out[8]: list

In [9]: type(a) is list
Out[9]: True

In [10]: 

(上面这部分的代码是Linux环境中的ipython软件中的执行结果)

嵌套列表

需求场景:

商品+价格,需要将商品和价格进行强关联,如:Python_book 90、Mac 10000

实现:

goods_price=[['python_book',90],['Mac',10000]]
print(goods_price)
print(goods_price[1])
print(goods_price[0][1])
print(goods_price[1][0])

结果:

[['python_book', 90], ['Mac', 10000]]
['Mac', 10000]
90
Mac

发布了33 篇原创文章 · 获赞 52 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_44714603/article/details/104097570