1.1.容器概念:在Python中包含其他对象的对象,称之为容器,是一种数据结构
1.1.2.常用的容器主要划分为两种:序列(如:列表,元组)和映射(如:字典)
1.2.列表
1.2.1.概念:多种数据类型的数据使用逗号分隔放置在中括号中的一组可变序列
4.2.2.创建列表:
格式:listname=[element,element2,element3.....,elenment]
listname:列表名,必须符合标识符命名规则
element:列表名,元素个数无限制,可以为任意合法的数据类型
例1:
num=[2,5,7,9]
str1=['china','hello','world']
str2=[45.6,'hello','中国']
print(num)
print(str1)
print(str2)
创建空列表:listname=[]
注意:为了提高程序可读性,建议列表中存储相同类型的数据
使用内置函数list()创建列表:
格式:listname=list(迭代对象)
t1=list()
t2=list('china')
print(t1)
print(t2)
使用range()创建数值迭代列表:
t3=list(range(10,20,2))
print(t3)
注意:
list()参数必须为可迭代对象,否则报错,如:t4=list(5) #报错
将列表转换为列表无意义且浪费资源,如:
t5=[1,2,3,4,5]
t6=list(t5)
print(t6)
1.2.3.删除列表
格式1:del listname
team=['皇马','拜仁','利物浦','罗马']
del team
#print(team)
格式2:listname.claer():清空列表内容,保留列表结构
注意:python自带垃圾回收机制,会自动的销毁不同列表,一般不需要手动删除
1.2.4.通过索引访问列表
作用:在序列中每一个元素都有一个编号(下标),用来访问元素
原则:由左向右从0递增,也可以由右向左从-1开始递减
例1:
team=[114,89.5,'春眠不觉晓',66]
1.2.5.索引引用:listname[索引],如:
team[0],team[1],team[2],team[-1],注意:可以通过索引删除元素:del listname[索引],如:上列中,del team[-2],当为空列表时,不能通过索引访问引用,如:
team=[]
print(team[0])
1.2.6.输出列表时:print(列表名)
1.2.7.列表切片
作用:通过切片可以访问一定范围内的元素,也可以生成新的列表
格式:listname[start,end,step]
start:切片开始索引(包含),若省略则为0
end:切片截止索引(不包含),若省略则为整个列表长度
step:切片长度,若省略则为1,且最后一个冒号也可以省略,若为负值表示反向取值
例1:
t1=[2,4,6,8,10,12,14,16,18,20]
print(t1[0:7:4]) #索引从0开始到6终止,间隔4
print(t1[1:5]) #间隔1
print(t1[2:]) #从2索引开始到结束
print(t1[:] #全部
print(t1[::]) #全部
print(t1[0:]) #全部
print(t1[:-1]) #-1表示最后一个元素(不包含)
#print(t1[0:-1:1])
print(t1[0:6:0]) #报错,步长不能为0
print(t1[::-1]) #反向输出
1.2.8.列表相加
作用:将相同类似的序列进行连接,但不会去掉重复值
符号:+
例1:
t1=[1,2,3]
t2=[4,5,6]
t3=['hello']
t4=['world']
t5=t1+t2
t6=t3+t4
print(t5,t6)
t7=t5+t6
print(t7)
例2:列表与常量连接时会报错
t1=['hello','world']
print(t1+'china') #报错了
1.2.9.列表的相乘
作用:使用数字n乘以一个列表会进行复制重复n次
符号:*
例1:
t1=[1,2,3]
t2=['hello','world']
print(3*t1)
print(t2*4)
例2:初始化长度为n的空列表
emptylist=[None]*5
print(emptylist)
1.2.10.列表包含不包含
作用:检查某个元素是否为列表的成员
格式:value in listname 或 value not in listname
value:被检查的元素
1.2.11.列表常用函数
计算列表长度:len(listname)
计算列表的最大值:max(listname)
计算列表最小值:min(listname)
计算列表元素和:sum(listname)
1.2.12.列表遍历
处理数值:
for item in listname:
处理item
处理索引和数值:
for index,item in enumerate(listname)
处理index和item
index存储索引下标,item存储列表元素
1.2.13.程序实例
例1:输出列表的最大值:
import random
t1=random.sample(range(10,30),10) #产生10-30之间10个不重复随机数
print(t1)
print('max=',max(t1))
import random
t1=random.sample(range(10,30),10) #产生10-30之间10个不重复随机数
print(t1)
# print('max=',max(t1))
max=t1[0] #max变量存储列表第一个元素
for i in t1:
if max<i:
max=i
print('max=',max)
例2:将列表值为偶数,索引为奇数的值输出
import random
t1=random.sample(range(10,30),10)
print(t1)
for index,item in enumerate(t1):
if item%2==0 and index%2==1:
print(index,item)
import random
t1=random.sample(range(10,30),10)
print(t1)
for index,item in enumerate(t1):
if item%2==0 and index%2==1:
pass #什么事不干
else:
print(index,item)
#除了值为偶数,索引为奇数的值输出
例3:素数判断筛选法:筛选出100以内的素数
list1=list(range(0,101)) #产生0-100的列表
print()
i=2 #由于最小素数为2,则遍历元素时从2开始,列表中索引与值相同
while i<100: #遍历列表
j=list1[i]*2 #计算当前值得以倍数
while j<100:
list1[j]=0 #将倍数置为0
j=j+list1[i]
i+=1
while list1[i]==0:
i=i+1 #排除已经置为0的元素,不在遍历
for i in range(2,100): #将列表中不再是0的元素输出
if list1[i]!=0:
print(list1[i],end=' ')
1.2.14.列表的元素添加与删除
添加元素:listname.append(obj)
例1:将值为奇数,索引为偶数的元素存储到另一个列表中
import random
t1=random.sample(range(10,30),10)
t2=[]
print(t1)
for index,item in enumerate(t1):
if item %2==0 and index % 2==1:
t2.append(item)
print(t2)
删除元素:
根据索引删除:del listname[index]
根据内容该删除:listname.remove(obj)
例2:删除指定元素
import random
t1=random.sample(range(10,30),10)
print(t1)
n=int(input('请输入需要删除的元素的值:'))
t1.remove(n)
print(t1)
1.2.15.列表元素统计
格式:listname.count(obj)
作用:获取元素在列表中出现的次数,只能精确匹配
注意:count()方法一般与remove()方法配合使用,即删除前先统计元素是否存在,例:
import random
t1=random.sample(range(10,30),10)
print(t1)
n=int(input('请输入需要删除的元素的值:'))
if t1.count(n)>0: #先统计判断后再删除
t1.remove(n)
print(t1)
else:
print('你输入的元素不存在列表中')
1.2.16.列表的排序
例1:有n元素参与排序,一共进行n-1次进行比较,每次都是当前值与下一个值进行比较,比较到n之前结束,大于号为升序,小于号为降序
import random
t1=random.sample(range(10,30),10)
print(t1)
n=int(input('请输入需要删除的元素的值:'))
if t1.count(n)>0: #先统计判断后再删除
t1.remove(n)
print(t1)
else:
print('你输入的元素不存在列表中')
例2:插入排序
import random
t1=random.sample(range(0,20),20)
print('排序前:',t1)
for i in range(1,20):
t=t1[i] #t为带插入元素
j=i-1
#while循环作用:将比当前元素大的值向后移动一个位置
while j>=0 and t<t1[j]:
t1[j+1]=t1[j]
j=j-1
t1[j+1]=t #插入备份元素
print('排序后:',t1)