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]

python 中容器 python内置的容器对象_迭代

 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之前结束,大于号为升序,小于号为降序

python 中容器 python内置的容器对象_python_02

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:插入排序

python 中容器 python内置的容器对象_python 中容器_03

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)