Python基础学习(5)—列表

列表

1.1列表定义

Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。
从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针.

1.2 创建列表

1.可使用赋值运算符“=”将一个列表赋值给变量

list_name=[element1,element2,...,elementn]

其中list_name为列表的名称,要避免和Python的内置函数重名。

2.使用list()函数创建列表

a = list('Python')
print(a)
# ['P','y','t','h','o','n']
a = ('Python',20)
b = list(a)
# 将元组转换成列表
print(b)
# ['Python','20']

1.3 删除列表

如果创建的列表不再使用时,可以用del语句将它删除(实际刚开始时,del语句不常用,因为Python自带的垃圾回收机制会自动销毁不用的列表)

a = ['q','w','e','r']

print(a)#  ['q','w','e','r']

del a

print(a)
#Traceback (most recent call last):
  File "D:/python第一节/venv/44.py", line 14, in <module>
    print(a)
NameError: name 'a' is not defined

1.4 访问列表元素

列表的元素索引是从0开始,即第一个元素的索引是0,第二个索引为1,依次类推。

列表还支持索引值是负数,此类索引是从右向左计数,假设N个元素的化,就是从最后一个元素开始计数,从索引值-1开始,倒数第二个元素为-2,依次到第一个元素-(n-1)。

不能赋值列表中不存在的索引,否则会报错。

a = ['q','w','e']

print(a[0]) # q

print(a[2]) # e

print(a[-1])# e

print(a[-2])# w

print(a)# ['q','w','e']

1.5 序列切片

列表实现切片操作的语法规则
list_name[start🔚step]#区间是左闭右开的!

list_name:表示列表的名称;

start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为 0,也就是从列表的开头进行切片;

end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;

step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果 step 的值大于 1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置 step 的值,则最后一个冒号就可以省略。

a = ['q','w','e','r']

print(:2)# q w

print(::2)# q e

print(:)# ['q','w','e','r']

1.6 添加列表元素

1 使用"+"运算符将列表进行拼接
语法格式
list_name3 = list_name2 + list_name1

a = [1,2,3]
b = [4,5,6]

c = a + b
print(c)

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

2 使用append()方法添加新元素
语法格式
list_name.append(obj)

a = [10, 20, -2]

#追加元素
a.append('30')

print(a)
# [10,20,-2,30]

b = (3,4)
# 追加元组,元组被当成一个元素

a.append(b)
print(a)

#[10,20,-2,30,(3,4)]

# 追加列表,列表被当成一个元素
a.append(['a', 'b'])
print(a)

#[10,20,-2,30,(3,4),['a','b']]

3 使用extend()方法添加元素
语法格式
list_name.extend(obj)
a = [10, 20, -2]

# 追加元素
a.append('30')

print(a)
# [10,20,-2,30]

b = (3,4)
# 追加元组里所有元素

a.append(b)
print(a)

#[10,20,-2,30,3,4]

# 追加列表里所有元素
a.append(['a', 'b'])
print(a)

#[10,20,-2,30,3,4,'a','b']

4 使用 insert() 在列表中插入元素
语法格式
list_name.insert(索引,obj)

a = [1,2,3]

a.insert(2,4)

print(a)
# [1,2,4,3]
a.insert(5,6)

print(a)

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

1.7 删除列表元素

1 使用del语句指定元素删除
语法格式
del list_name[ ]和del list_name[start:end]

a = [10, 20, -2]

del a[0]

print(a)
# [20,-2]

a = [10, 20, -2]

del a[0:2]

print(a)
#[-2]

2 根据元素的值进行删除
语法格式
list_name.remove(obj)

lis = ['a', 'b', 'c','d']

lis.remove('d')

print(lis.remove('a'))# 返回值为:None
print(lis)# ['b','c']

lis.romve('e')# 如果列表中没有所删除的元素,则会报错 
#ValueError: list.remove(x): x not in list

3 根据索引来进行删除的 默认弹出最后一个 传值的话 按照索引来进行弹出,一般弹出最后一个值
语法格式
弹出最后一个值 list_name.pop()
弹出特定索引所指的值 list_name.pop(obj)

a = ['w','r','d']

b = a.pop()
c = a.pop(0)
print(c)# w
print(b)# d 
print(a)# ['r']

1.8 修改列表元素

1 对已有的元素通过索引值来修改特定元素
语法格式
list_name [ ]=
索引也可为负数

a = ['w','r','d']

a [0] = 'q'

a [-2] = 't'

print(a)
# ['q', 't', 'd']

a[3] = 'p'

print(a)
#  IndexError: list assignment index out of range
# 对不存在的值进行修改时会报错,错误类型为索引错误

2 程序也可通过 slice 语法对列表其中一部分赋值。在执行这个操作时,并不要求新赋值的元素个数与原来的元素个数相等。这意味着通过这种方式既可为列表增加元素,也可为列表删除元素,
语法格式
list_name [start:end :step]= [一个或多个元素]

1 当参数中没step时

# 修改前两个元素
a = ['w','r','d']

a[0:2] = ['a','s']

print(a)
# ['a', 's', 'd']

# 修改第一个元素,并添加一个元素
a = ['w','r','d']
a[0:1] = [1,2]

print(a)
# [1, 2, 'r', 'd']

# 给索引为0的位置添加两个元素
a = ['w','r','d']

a[0:0] = [1,2]

print(a)
# [1, 2, 'w', 'r', 'd']
2 当参数中有step时,要求所赋值的列表元素个数与所替换的列表元素个数相等
a = ['w','r','d','y','u','i','o','p']

a[0:8:2] = [1,2,3,4]
# 从第一个数开始替换,指定step为2(索引差值为2),被被赋值的元素个数为4)

print(a)
# [1, 'r', 2, 'y', 3, 'i', 4, 'p']

1.9列表的内置方法

1 list_name.reverse() 返回结果为None 反向列表中元素(自身排序)
排序后再打印list_name,

2 list_name.sort(key = None,reserve = False) 对原列表进行升序排序

key 参数用于指定从每个元素中提取一个用于比较的键。例如,使用此方法时设置 key=str.lower 表示在排序时不区分字母大小写。 指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小,还可以为int等

reverse 参数用于设置是否需要反转排序,默认 False 表示从小到大排序;如果将该参数设为 True,将会改为从大到小排序

3 list_name.sort(reverse=True) 对列表进行反向排序
4 list_name.copy() 复制列表(产生列表副本,与list[:]作用相同,改动元素时对原列表不造成影响)
5 list_name.clear() 清空列表,等于del lis[:]
6 list_name.count(obj) 统计某个元素在列表中出现的次数
7 list_name.len() 统计列表中元素个数
8 list_name.index() 方法用于定位某个元素在列表中出现的位置,如果该元素没有出现,则会引发 ValueError 错误,index() 方法还可传入 start、end 参数,用于在列表的指定范围内搜索元素。
语法格式
list_name.index(obj,start,end)

li = ['a', 'b', 'c', 'd','a']

 print(li.count('a'))# 2

# 字典  {key:value}  {name:juran}
for i in {'name':'juran','age':18}:
    print(i)# name age
# key 键
li.extend({'name':'juran','age':18})
print(li)# ['a', 'b', 'c', 'd', 'a','name', 'age']

a_list = [2, 30, 'a', 'b', 30]
# 定位元素30的出现位置
print(a_list.index(30)) #1
# 从索引2处开始、定位元素30的出现位置
print(a_list.index(30, 2)) 
# 从索引2处到索引4处之间定位元素30的出现位置,因为找不到该元素,会引发 ValueError 错误
print(a_list.index(30, 2, 4))

2.0 列表的特殊操作

1)列表组合
2)列表的乘法
3)判断元素是否在列表内部
4)迭代列表中的每个元素


lis1 = [1, 2, 3]
lis2 = [4, 5, 6]
列表的拼接  不是对应位置相加!!!!
lis3 = lis1 + lis2

print(lis3)
#[1, 2, 3, 4, 5, 6]

魔术方法 面向对象
print(lis1.__add__(lis2))
#[1, 2, 3, 4, 5, 6]

lis3 = lis1 * 3   
print(lis3)
 # [1,2,3,1,2,3,1,2,3]

print(lis1.__imul__(2))

#[1, 2, 3, 4, 5, 6]
列表不能相乘
print(lis1 * lis2)
#TypeError: can't multiply sequence by non-int of type 'list'

print(2 in lis1)# True
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值