一篇搞定python基础(七)

举报
rivers 发表于 2022/04/14 14:54:37 2022/04/14
【摘要】 python入门基础(七),这篇文章主要介绍了列表。为什么需要列表 变量可以存储一个元素,列表可以存储多个元素,程序可以方便的对这些数据进行整体操作 列表相当于其他语言中的数组

二十二、列表

22.1、为什么需要列表

  • 变量可以存储一个元素,列表可以存储多个元素,程序可以方便的对这些数据进行整体操作
  • 列表相当于其他语言中的数组

22.2、列表对象的创建

'''创建列表第一种方式,使用[]'''
lst=['hello','world',98]#采用顺序索引,第一个为0,采用倒序索引,最后一个为-1
print(lst)
print(lst[0],lst[-3])

结果为:
['hello', 'world', 98]
hello hello

'''创建列表第二种方式,使用内置函数list()'''
lst2=list(['hello','world',98])
print(lst2)

结果为:
['hello', 'world', 98]

22.3、列表的特点

  • 列表元素按顺序有序排序
  • 索引映射唯一一个数据
  • 列表可以存储重复数据
  • 任意数据类型混存
  • 根据需要动态分配和回收内存

22.4、获取指定元素的索引

'''获取指定元素的索引'''
lst=['hello','world',98,'hello']
print(lst.index('hello'))#如果列表存在多个相同元素,只返回第一个元素的索引
#print(lst.index('python'))#如果查询的元素不在列表中,就会出现ValueError: 'python' is not in list
print(lst.index('hello',1,4))#还可以在指定的范围内查找

结果为:
0
3

22.5、获取列表中指定的元素

  • 正向索引从0到N-1,举例lst[0]
  • 逆向索引从-N到-1,举例lst[-N]
  • 指定索引不存在,就出现IndexError: list index out of range

22.6、获取列表中的多个元素—切片操作

'''获取列表中的多个元素---切片操作'''
lst=[10,20,30,40,50,60,70,80,90]
#开始=1  结束=6   步长=1
print(lst[1:6:1])
print('原列表',id(lst))
lst2=lst[1:6:1]
print('切的片段:',lst2)#切片的结果是对原列表片段的拷贝

结果为:
[20, 30, 40, 50, 60]
原列表 2673939921216
切的片段: [20, 30, 40, 50, 60]

'''切片操作
1.切片的结果:原列表片段的拷贝
2.切片的范围:[开始,结束]
3.步长默认1:简写为[开始:结束]
4.步长为正数:从开始往后计算切片
    [:结束:步长]    切片的第一个元素默认为列表的第一个元素
    [开始::步长]    切片的最后一个元素默认为列表的最后一个元素
5.步长为负数:从结尾往前计算切片
    [:结束:步长]    切片的第一个元素默认为列表的最后一个元素
    [开始::步长]    切片的最后一个元素默认为列表的第一个元素
'''

#步长为正数
print(lst[1:6])#默认步长1
print(lst[1:6:])#开始1  结束5 步长1
print(lst[1:6:2])#开始1 结束5 步长2
print(lst[:6:2])#开始0 结束5 步长2
print(lst[1::2])#开始1 步长2

结果为:
[20, 30, 40, 50, 60]
[20, 30, 40, 50, 60]
[20, 40, 60]
[10, 30, 50]
[20, 40, 60, 80]

#步长为负数
print(lst[::-1])
print(lst[7::-1])#开始7 步长-1
print(lst[6:0:-2])#开始6 结束0 步长-2

结果为:
[90, 80, 70, 60, 50, 40, 30, 20, 10]
[80, 70, 60, 50, 40, 30, 20, 10]
[70, 50, 30]

22.7、列表元素的判断及遍历

#列表元素的判断及遍历
lst=[10,20,'python','hello']
print(10 in lst)
print(100 in lst)
print(10 not in lst)
print(100 not in lst)

结果为:
True
False
False
True

#遍历列表中的元素
for item in lst:
    print(item)

结果为:
10
20
python
hello

22.8、列表元素的增删改操作

  • 列表元素的增加

    #向列表的末尾添加一个元素
    lst=[10,20,30]
    print('添加元素之前:',lst,id(lst))
    lst.append(100)
    print('添加元素之后',lst,id(lst))
    
    结果为:
    添加元素之前: [10, 20, 30] 2351725689024
    添加元素之后 [10, 20, 30, 100] 2351725689024
    
    #向列表末尾添加多个元素
    lst2=['hello','world']
    lst.extend(lst2)#将lst2作为一个元素添加到列表的末尾
    print(lst)
    
    结果为:
    [10, 20, 30, 100, 'hello', 'world']
    
    #在任意位置添加一个元素
    lst.insert(1,90)
    print(lst)
    
    结果为:
    [10, 90, 20, 30, 100, 'hello', 'world']
    
    #在任意位置添加多个元素(切片)
    lst3=[True,False,'hello']
    lst[1:]=lst3#从索引为1的地方开始,把后面所有的内容切掉,再替换成lst3的内容
    print(lst)
    
    结果为:
    [10, True, False, 'hello']
    
  • 列表元素的删除

    '''列表元素的删除操作'''
    lst=[10,20,30,40,50,60,30]
    lst.remove(30)#从列表中移除一个元素,有重复元素只移除第一个
    print(lst)
    #lst.remove(100)#元素不存在就报错ValueError: list.remove(x): x not in list
    
    结果为:
    [10, 20, 40, 50, 60, 30]
    
    #pop()根据索引移除元素
    lst.pop(1)#移除索引为1的元素
    print(lst)
    #lst.pop(10)#指定的索引位置不存在就报错IndexError: pop index out of range
    print(lst)
    lst.pop()#不指定索引就移除列表最后一个元素
    print(lst)
    
    结果为:
    [10, 40, 50, 60, 30]
    [10, 40, 50, 60, 30]
    [10, 40, 50, 60]
    
    '''切片操作--删除至少一个元素,将产生一个新的列表对象'''
    new_list=lst[1:3]
    print('原列表',lst)
    print('切片后的列表',new_list)
    
    结果为:
    原列表 [10, 40, 50, 60]
    切片后的列表 [40, 50]
    
    '''不产生新的列表对象,而是删除原列表中的内容'''
    lst[1:3]=[]
    print(lst)
    
    结果为:
    [10, 60]
    
    '''清除列表中的所有元素'''
    lst.clear()
    print(lst)
    
    结果为:
    []
    
    '''del语句将列表对象删除'''
    del lst
    #print(lst)#列表对象删除后就报错NameError: name 'lst' is not defined
    
  • 列表元素的修改

    lst=[10,20,30,40]
    #使用索引修改一个值
    lst[2]=100
    print(lst)
    
    结果为:
    [10, 20, 100, 40]
    
    #使用切片修改多个值
    lst[1:3]=[300,400,500,600]
    print(lst)
    
    结果为:
    [10, 300, 400, 500, 600, 40]
    

22.9、列表元素的排序操作

lst=[20,40,10,98,54]
print('排序前的列表',lst)
#开始排序,调用列表对象的sort()方法,升序排序
lst.sort()
print('排序后的列表',lst)

结果为:
排序前的列表 [20, 40, 10, 98, 54]
排序后的列表 [10, 20, 40, 54, 98]

#通过指定关键字参数,将列表中的元素进行降序排序
lst.sort(reverse=True)#reverse=True表示降序排序,reverse=False表示升序排序
print(lst)

结果为:
[98, 54, 40, 20, 10]

#使用内置函数sorted()对列表进行排序,将产生一个新的列表对象
lst=[20,40,10,98,54]
print('原列表',lst)
#开始排序
new_list=sorted(lst)
print(new_list)

结果为:
原列表 [20, 40, 10, 98, 54]
[10, 20, 40, 54, 98]

#指定关键字参数,实现列表元素的降序排序
desc_list=sorted(lst,reverse=True)
print(desc_list)

结果为:
[98, 54, 40, 20, 10]

22.10、列表生成式

#列表生成式
lst=[i*i for i in range(1,10)]
print(lst)

结果为:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

'''列表中的元素值为2,4,6,8,10'''
lst2=[i*2 for i in range(1,6)]
print(lst2)

结果为:
[2, 4, 6, 8, 10]

二十三、字典

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。