Python入门第六章---列表

变量存储的是一个对象的引用,列表存储的是N多个对象的引用

lst=['hello','world',98]

列表的创建

  1. 列表需要使用中括号[],元素之间使用英文的逗号进行分割
list1=['hello','world',98]
  1. 调用内置函数list()
list2=list(['hello','world',98,'hello'])

列表的特点

  1. 列表元素按顺序有序排序
print(list2)                   #['hello', 'world', 98, 'hello']
  1. 索引映射唯一一个数据:从前向后0、1、2··· 从后往前-1、-2、-3···
print(list2[0],list2[-3])               #hello world
  1. 列表可以存储重复数据
print(list2[0],list2[-4])             #hello hello
  1. 任意数据类型混存
  2. 根据需要动态分配和回收内存

列表生成式

[    i/i*i             for    i      in range(1,10)]
#列表元素的表达式            自定义变量    可迭代对象

例:生成列表中的元素的值为2、4、6、8、10

lst3=[i*2 for i in range(1,6)]
# lst3=[i for i in range(2,11,2)]
print(lst3)

列表的查询操作

index()方法获取列表中指定元素的索引

如果查列表中存在N个相同元素,只返回元素中的第一个元素的索引

lst=['hello','world',98,'hello']
print(lst.index('hello'))              #0

如果查询的元素在列表中不存在,则会抛出ValueError
还可以在指定的start和stop之间进行查找

print(lst.index(98,0,3))             #2

获取列表中的单个元素

正向索引从0到N-1;逆向索引从-N到-1;指定索引不存,抛出IndexError

lst1=['hello','world',98,'hello','world',234]
print(lst1[2])                    #98
print(lst1[-4])                   #98
# print(lst1[10])         #IndexError: list index out of range

获取列表中的多个元素 [start:stop:step]

切片的结果是原列表片段的拷贝(新的列表对象),切片范围[start,stop) 左闭右开

lst2=[10,20,30,40,50,60,70,80,90]
print('原列表id',id(lst2))
print(lst2[1:7:2])           #[20, 40, 60]
lst3=lst2[1:7:2]
print('切的片段id',id(lst3))

#step默认为1,可省略
print(lst2[1:6])          #[20, 30, 40, 50, 60]
print(lst2[1:6:])         #[20, 30, 40, 50, 60]

#step为正数,从start开始往后计算切片
#     切片的第一个元素(start)默认是列表的第一个元素
#     切片的最后一个元素(stop)默认是列表的最后一个元素
print(lst2[:3:2])         #[10, 30]
print(lst2[4::2])         #[50, 70, 90]
print(lst2[::1])          #[10, 20, 30, 40, 50, 60, 70, 80, 90]

#step为负数,从start开始往前计算切片
print(lst2[3:0:-1])        #[40, 30, 20]
#     切片的第一个元素(start)默认是列表的最后一个元素
#     切片的最后一个元素(stop)默认是列表的第一个元素
print(lst2[:3:-2])         #[90, 70, 50]
print(lst2[4::-2])         #[50, 30, 10]
print(lst2[::-1])          #[90, 80, 70, 60, 50, 40, 30, 20, 10]

列表元素的判断及遍历

判断指定元素在列表中是否存在:元素 in/not in 列表名

print('p' in 'python')         #True
print('h' not in 'python')     #False

列表元素的遍历:for 迭代变量 in 列表名 :

lst=[10,20,'python','hello']
for item in lst:
    print(item)

运行结果:在这里插入图片描述

列表的增加操作

append()在列表的末尾添加一个元素

lst=[10,20,30]
print('添加元素之前:',lst,id(lst))
lst.append(100)
print('添加元素之后:',lst,id(lst))      #没有创建新的对象

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

extend()在列表的末尾至少添加一个元素

lst.extend(lst1)        #将lst2作为多个元素一次性添加到列表的末尾
print(lst)               #[10, 20, 30, 100, ['hello', 'world'], 'hello', 'world']

注意和append()的区别

insert(插入某位置,插入的元素)在列表的任意位置添加一个元素

lst.insert(1,90)
print(lst)              #[10, 90, 20, 30, 100, ['hello', 'world'], 'hello', 'world']

切片[start,stop] 在列表的任意位置添加至少一个元素 将切掉的元素(左开右闭)替换成要添加的元素

lst2=['python',999,'你好']
lst[1:]=lst2
print(lst)            #[10, 'python', 999, '你好']

列表元素的删除操作

列表名.remove()一次删除一个元素 重复元素只删除第一个 元素不存在抛出ValueError

lst1=[1,2,3,4,5,6,3,1]
print('列表删除前:',lst1)     #[1, 2, 3, 4, 5, 6, 3, 1]
lst1.remove(1)
print('列表删除后:',lst1)     #[2, 3, 4, 5, 6, 3, 1]
# lst1.remove(100)         #ValueError: list.remove(x): x not in list

列表名.pop(某位置)删除一个指定索引位置上的元素 指定索引不存在抛出IndexError 不指定索引,删除列表的最后一个

lst1.pop(1)
print(lst1)           #[2, 4, 5, 6, 3, 1]
# lst1.pop(6)           #IndexError: pop index out of range

lst1.pop()
print(lst1)             #[2, 4, 5, 6, 3]

列表名.切片 一次至少删除一个元素

print('切片前:',lst1)             #[2, 4, 5, 6, 3]
new_list=lst1[1:4]          #产生一个新的列表对象
print('切片后:',new_list)         #[4, 5, 6]
lst1[1:4]=[]
print(lst1)                       #[2, 3]

列表名.clear() 清空列表

lst1.clear()
print(lst1)                #[]

del 列表名 删除列表

del lst1
# print(lst1)          #NameError: name 'lst1' is not defined

列表元素的修改操作

为指定索引的元素赋予一个新值

lst=[1,2,3,4,5]
print('修改前',lst)           #修改前 [1, 2, 3, 4, 5]
lst[2]=100
print('修改后',lst)           #修改后 [1, 2, 100, 4, 5]

为指定的切片赋予一个新值

lst[1:3]=[111,222,333]
print(lst)                    #[1, 111, 222, 333, 4, 5]

列表元素的排序操作

调用sort()方法

列表名.sorted(),列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序

lst=[52,43,62,52,25,72,92]
print('排序前的列表:',lst,id(lst))
lst.sort()                            #默认升序
print('默认排序后的列表:',lst,id(lst))      #没有生成新的列表对象

lst.sort(reverse=True)
print('降序排序:',lst)
lst.sort(reverse=False)
print('升序排序:',lst)

调用内置函数sorted()

sorted(列表名),可以指定reverse=True,进行降序排序,创建了一个新的列表,原列表不发生改变

lst=[52,43,62,52,25,72,92]
print('原列表:',lst,id(lst))
new_list=sorted(lst)                    #创建了一个新的列表对象
print('新列表:',lst,id(new_list))
desc_list=sorted(lst,reverse=True)
print('降序排序:',desc_list)
asc_list=sorted(lst,reverse=False)
print('升序排序:',asc_list)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值