python-列表list(详细)

本文详细介绍了Python列表的概念、创建方法、访问元素(包括索引和嵌套列表)、查询、增加、删除、修改以及排序。重点讨论了列表的索引、嵌套访问、元素查找、列表生成式和排序操作。通过实例展示了如何操作Python列表,帮助理解其特性和功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、列表概念

语法:使用方括号 [] 括起来以逗号分隔的数据
特性:

  1. 列表是有序的
  2. 同一个列表可以包含不同类型的数据
  3. 列表中的元素可以重复出现
  4. 可以通过索引的方式来访问列表的元素
  5. 列表可以嵌套列表
  6. 列表的元素可以修改
  7. 列表相当于其它语言中的数组

2、列表对象的创建

  1. 使用中括号
  2. 调用内置函数list(),使用list()可以将任何可迭代的数据转换为列表
#字符串转换为列表
>>> a=list('ggggdgag')
>>> a
['g', 'g', 'g', 'g', 'd', 'g', 'a', 'g']

#通过range函数转换为列表
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5,-10,-1))   #range(start,end,step),只有end必选
[5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

3、列表访问

3.1. 索引获取列表元素
  • 正向索引从O到N-1举例: Ist[0]
  • 逆向索引从-N到-1举例: lst[-N]
  • 指定索引不存,抛出lndexError
  • 列表的访问索引、切片方法和字符串使用方法相同,包括步长方法
lst=['hello','world',98,'hello','world',234]
#获取索引为2的元素,该处是为正向索引,从1开始
print(lst[2])
#获取索引为-3的元素,负向索引,从-1开始
print(lst[-3])
#print(lst[10]) IndexError: list index out of range,超出了索引的范围,会抛出异常
3.2、嵌套列表索引获取列表元素

访问其中某个元素时,索引的使用方法是列表名[嵌套列表的位置][所需访问的元素在嵌套列表的位置]

my_list = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']
print(my_list[0])
print(my_list[1])
print(my_list[1][0])
print(my_list[1][1]
3.3、获取指定元素的索引
  1. index():
  2. 如查列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
  3. 如果查询的元素在列表中不存在,则会抛出ValueError
  4. 还可以在指定的start和stop之间进行查找
lst=['hello','worid',98,'hello']
print(lst.index('hello'))  #如果列表种由相同元素值返回列表中相同元素的第一个索引
#print(lst.index('python'))  #ValueError: 'python' is not in list,说明里面没有这个元素
#print(lst.index('hello',1,3)) #ValueError: 'python' is not in list  ,1是指world,3值hello,但他不包括1和3本身,所以找不到
print(lst.index('hello',1,4))

4、查询列表

判断指定元素在列表中是否存在:
元素 in 列表名
元素 not in 列表名
列表元素的遍历:
for 迭代变量 in列表名:
操作

print('p'in'python') #true
print('k'not in 'python') #true

print('-------遍历-------------')
for item in lst:
    print(item)

5、列表增加

方法操作说明
append()在列表的末尾添加一个元素
extend()在列表的末尾至少添加一个元素
insert()在列表的任意位置添加一个元素
切片在列表的任意位置添加至少一个元素
#向列表的末尾添加一个元素
>>> lst=[10,20,30]
>>> print('添加元素之前',lst,id(lst))
#添加元素之前 [10, 20, 30] 53497344
>>> lst.append(100)
>>> print('添加元素之后',lst,id(lst))
添加元素之后 [10, 20, 30, 100] 53497344
#通过对比添加元素前后的id可知,添加元素后他并没有创建新的对象

>>> lst2=['hello','world']
>>> lst.append(lst2)
>>> lst
[10, 20, 30, 100, ['hello', 'world']]
#lst.append(lst2) #这个操作是将lst2作为以一个元素添加到列表的末尾


#向列表的末尾一次性添加多个元素,不创建新对象
>>> lst.extend(lst2)
>>> lst
[10, 20, 30, 100, ['hello', 'world'], 'hello', 'world']


#在任意位置上一添加一个元素,不创建对象
>>> lst.insert(1,90) #意思是在索引为1的位置上添加90
>>> lst
[10, 90, 20, 30, 100, ['hello', 'world'], 'hello', 'world'


#任意位置上添加N个元素,不创建对象
>>> lst3=['true','false','hello']
>>> lst[1:]=lst3
>>> lst
[10, 'true', 'false', 'hello'] #其实就是从下标1到指定元素的值改为lst3的值

#使用+号
>>> eight_immortal +=[50] #不创建对象
>>> eight_immortal=eight_immortal+[100] #创建新对象

#说明:+,append()不一样地方是,+为向当前列表追加一个或多个元素,append则是根据append内容添加一个元素或一个列表,也就是说append一次只能增加一个元素或一个列表

6、列表删除

方法/其它操作描述
remove-次删除一个元素
重复元素只删除第一个
元素不存在抛出ValueError
pop()删除一个指定索引位置上的元素
指定索引不存在抛出IndexError
不指定索引,删除列表中最后一个元素
切片一次致少删除一个元素
clear()清空列表
del删除列表
lst=[10,20,30,40,50,60,70,80,30]
lst.remove(30)  #从列表中移除一个元素,如果又重复元素只移第一个
print(lst)
#pop()根据索引移除元素
lst.pop(1)
print(lst)  #可以发现索引为1的位置上的元素被移除了
#lst.pop(6)  如果指定的索引位置不存在则抛出异常
lst.pop()  #如果不指定参数,则将删除列表中的最后一个元素
print(lst)
 
print('------------切片操作-------------')
new_list=lst[1:3]
print('源列表',lst)
print('切片后的列表',new_list)
 
'''不产生新的列表对象,二十删除原列表中的内容'''
lst[1:3]=[]  #其实不是真正的删除,而是用一个空列表将起替代
print(lst)
'''清除列表中的所有元素'''
lst.clear()
print(lst)
 
'''del语句将列表对象删除'''
del lst
#print(lst)  会报错,找不到列表

7、列表修改

1、为指定索引的元素赋予一个新值
2、为指定的切片赋予一个新值

#一次修改一个
>>> l=[1,2,3,4]
>>> l[0]=0
>>> l
[0, 2, 3, 4]
#一次修改多个
>>> lst=[10,20,30,40]
>>> lst[1:3]=[300,400,500,600] 
>>> lst
#将下标1、2元素替换掉,并将多余元素追加至下标2后
[10, 300, 400, 500, 600, 40]
>>> lst[1:3]=[300,400,500,600]
>>> lst
[10, 300, 400, 500, 600, 500, 600, 40]
#将下标1-49元素替换
>>> lst[1:50]=[300,400,500,600] #同等于lst[1:]
>>> lst
[10, 300, 400, 500, 600]

8、列表排序

1、调用sort()方法,列有中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序
2、调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变

>>> lst=[20,40,10,98,54]
>>> print('排序前的列表',lst,id(lst))
排序前的列表 [20, 40, 10, 98, 54] 45669120
#开始排序,调用列表对象的sort方法,升序排序
>>> lst.sort() #不产生新的列表对象
>>> print('排序后的列表',lst,id(lst))
排序后的列表 [10, 20, 40, 54, 98] 45669120
 
#通过指定关键字参数,将列表中的元素进行排序
>>> lst.sort(reverse=True)   #reverse=True表示降序排序,reverse=False就是升序排序
>>> lst
[98, 54, 40, 20, 10]
>>> lst.sort(reverse=False) #不产生新的列表对象
>>> lst
[10, 20, 40, 54, 98]

#------------使用内置函数sorted()对列表进行排序,将产生一个新的列表对象------------
>>> print('原列表',lst)
原列表 [10, 20, 40, 54, 98]
>>> new_list=sorted(lst) #开始排序
>>> lst
[10, 20, 40, 54, 98]
>>> new_list
[10, 20, 40, 54, 98]
>>> id(lst)
45669120
>>> id(new_list)
54132096
#指定关键字参数,实现列表元素的降序排序
>>> desc_list=sorted(lst,reverse=True)
>>> desc_list
[98, 54, 40, 20, 10]

9、列表生成式

#带上for循环,并且对变量进行后计算
>>> a=[x*2 for x in range(10)]
>>> a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

#带上if条件
>>> b=[x*2 for x in range(100) if x%9==0]
>>> b
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值