欢迎您进入老吴的博客,如有联系请加QQ群:1055524279
4.1 python列表的概述
列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型.比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
1. 字符串只能存储少量的数据,对于大量的数据用字符串操作不方便也不易存储。
2. 字符串存储的数据类型太单一,只能是字符串类型
如果存储数据类型是相同的用列表;例如存储100个人的名字 或者存储100个人的年龄。
很多个信息描述一个人需要用字典。字典用来描述一个信息的时候
#作用:多个装备,多个爱好,多门课程,多个女朋友等
#定义:[ ]内可以有多个任意类型的值,逗号分隔
#定义列表
name = [ ] #name等于中括号就是定义列表
列表用例存储数据的
4.1.1 python列表的定义
4.2 Python 列表的添加
# append 追加,给列表的最后面追加一个元素
l = [1, 2, 'a']
l.append(666)
print(l) # [1, 2, 'a', 666]
# insert 插入在列表的任意位置插入元素
l = [1, 2, 'a']
l.insert(1,'老吴')
print(l) # [1, '老吴', 2, 'a']
# extend 迭代着追加,在列表的最后面迭代着追加一组数据
l = [1, 2, 'a']
l.extend('柏晟')
print(l)
4.3 列表的删除
# pop 通过索引删除列表中对应的元素,该方法有返回值,返回值为删除的元素
l = ['老吴', 'test', 'wusir', '柏晟']
ret = l.pop(1)
print(ret,l) # test ['老吴', 'wusir', '柏晟']
# remove 通过元素删除列表中该元素
l = ['老吴', 'test', 'wusir', '柏晟']
l.remove('wusir')
print(l) # ['老吴', 'test', '柏晟']
# clear 清空列表
l = ['老吴', 'test', 'wusir', '柏晟']
l.clear()
print(l) # []
# del
#按照索引删除该元素
l = ['老吴', 'test', 'wusir', '柏晟']
del l[2]
print(l) # ['老吴', 'test', '柏晟']
# 切片删除该元素
l = ['老吴', 'test', 'wusir', '柏晟']
del l[1:]
print(l) # ['老吴']
# 切片(步长)删除该元素
l = ['老吴', 'test', 'wusir', '柏晟']
del l[::2]
print(l) # ['test', '柏晟']
4.4 Python列表的修改
# 列表的修改:
l = ['老吴', 'test', 'wusir', '柏晟']
l[0] = '男神'
print(l) # ['男神', 'test', 'wusir', '柏晟']
# 按照切片改值(迭代着增加)
l = ['老吴', 'test', 'wusir', '柏晟']
l[1:3] = 'abc'
print(l) # ['老吴', 'a', 'b', 'c', '柏晟']
# 按照切片(步长)改值(必须一一对应)
l = ['老吴', 'test', 'wusir', '柏晟']
l[::2] = '对应'
print(l) # ['对', 'test', '应', '柏晟']
4.5 Python列表的查找
代码:
list_a = ['tom', 'jerry', 'rose']
print('tom' in list_a)
if 'tom' in list_a:
list_a.remove('tom')
print(list_a)
4.5.1 列表查找的第二种方法:
list_a = ['Mark', 'test', 'hello']
a = list_a.index('test')
print('第一次出现的索引:',a)
4.6 列表的嵌套
对于列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
转化成列表 list_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9] 的问题。
代码:
list_2 = []
list_1 = [[1, 2], [3, 4, 5], [6, 7]]
for i in list_1:
list_2+=i
print(list_2)
# 使用sum
list_1 = [[1, 2], [3, 4, 5], [6, 7]]
list_2 = sum(list_1, [])
print(list_2)
4.7 列表的排序
Python中拥有内置函数实现排序,可以直接调用它们实现排序功能
Python 列表有一个内置的 list.sort() 方法可以直接修改列表。还有一个 sorted() 内置函数,它会从一个可迭代对象构建一个新的排序列表。
# 列表的排序
list2 = [2,3,8,6,4,3,1,2] # sort 默认从小到大排序
list2.sort()
print(list2)
#
list=[1,2,4,5,3]
print(sorted(list)) #sorted()函数排序
list2.sort(reverse=True) # 从大到小进行排序
print(list2)
list2.reverse() # 倒序
print(list2)
sort ()与sorted()区别:
sort() 是应用在 list 上的方法,sorted() 可以对所有可迭代的对象进行排序操作。
list 的 sort() 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted() 方法返回的是一个新的 list,而不是在原来的基础上进行的操作
4.8 python元组
4.8.1 元组的概述
对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型就是元组。
元组:俗称不可变的列表,又被成为只读列表,元祖也是python的基本数据类型之一,用小括号括起来,里面可以放任何数据类型的数据,查询可以,循环也可以,切片也可以.但就是不能改.
元组特点:是不可变
定义:与列表类型比,只不过[ ]换成() age=(11,22,33,44,55)
作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的)
4.8.2 元组的索引切片
tu1 = ('a', 'b', '柏晟',
3, 666)
print(tu1[0]) # 'a'
print(tu1[-1]) # 666
print(tu1[1:3]) # ('b', '柏晟')
print(tu1[:-1]) # ('a', 'b', '柏晟', 3)
print(tu1[::2]) # ('a', '柏晟', 666)
print(tu1[::-1]) # (666, 3, '柏晟', 'b', 'a')
4.8.3 访问元组
修改元组
说明:Python中不允许修改元组的数据,包括不能删除其中的元素。
元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。但是,如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变。
4.8.4 多维元祖访问的示例
参考代码:
a = (("刘备","吕布"),("老王","test"),("wusir","运维"))
print(a[0])
print(a[0][1])
print(a[1][1])
元组的索引和字符串以及列表完全一致。
4.8.5 python元组的方法
元组的查找 |
index |
从左往右返回第一个遇到的指定元素的索引,如果没有,报错 |
count |
返回元组当中指定元素的个数 |
元组的查找:
lis =
("wusir","test","python","baisheng","java")
print('test' in lis)
4.8.6 range函数的使用:
# range()h函数一般和for循环配合使用
print(range(1,10))
for i in range(1,10):
print(i)
for i in range(1,10,2):
print(i)
for i in range(10, 1, -2):
print(i)
range函数扩展遍历列表里面的元素
# 遍历lis 每一个元素的索引
lis =
["wusir","test","python","baisheng","java"]
# 方法一 ,列表不能有重复数据
for i in lis:
print(lis.index(i))
# 方法二 推荐使用
for i in range(0,len(lis)): # 起始位置是0开始,结束位置用len()函数表示
print(i)