python(4)

204 阅读7分钟

序列和索引

image.png

关于序列的相关操作

1.切片操作

image.png

  • 省略开始位置,默认是从0开始
  • 省略步长,步长默认是1
  • 省略结束位置,默认是最后
  • 省略开头和结尾,只写步长,就是默认是在全部里切

2.相加操作

image.png

3.相乘操作

image.png

4.序列的相关操作符和函数的使用

image.png

这里面min和max的判断是按照ASCII码值来计算的

一、列表

image.png


image.png

#1.直接使用[]创建列表
lst=['hellow','world',98,99,100]
#2.使用内置函数list()创建列表
lst2=list('helloworld')

列表是序列中的一种,对序列的操作符、运算符、函数 均可以使用 image.png

列表的遍历

#列表的遍历操作
lst=['hello','word','urbun']
#1.使用遍历循环for遍历列表元素
for item in lst:           
    print(item)
#2.用for循环,range()函数,根据索引进行遍历  
for i in range(0,len(lst)):
    print(i,'-->',lst[i]) 
#3.enumerate()函数
for index,item in enumerate(lst):
    print(index,item)#index是序号,不是索引
#手动修改序号的起始值
for index,item in enumerate(lst,start=1):#start可以不写
    print(index,item)

enunerate函数

image.png

列表的操作

1.列表的相关操作

image.png

image.png

2.列表的排序操作

image.png

(1)列表对象的sort方法

image.png

(2)内置函数sorted()

image.png

列表生成式

image.png

image.png

二维列表

image.png

1.二维列表的遍历

image.png

image.png

2.二维列表的生成

image.png

二、元组

image.png

#1.使用小括号创建元组
t=( 'hello',[10,20,30], ' python ' , ' world' )
print(t)

#2.使用内置函数tuple()创建元组
t=tuple('helloworld')
print(t)

t=tuple([10,20,30,40])
print(t)

元组是序列中的一种,对序列的操作符、运算符、函数 均可以使用 image.png

元组的遍历与访问

t=( 'python ' , ' hello' , 'world ' )
#根据索引访问元组
print(t[0])
t2=t[0:3:2]#元组支持切片操作
print(t2)

#1.使用遍历循环for遍历元组元素
for item in t:           
    print(item)
#2.用for循环,range()函数,根据索引进行遍历  
for i in range(len(t)):
    print(i,lst[i]) 
#3.enumerate()函数
for index,item in enumerate(t):
    print(index,'-->',item)#index是序号,不是索引
#手动修改序号从11开始
for index,item in enumerate(t,start=11)
    print(index,'-->',item)

元组的生成式

方法一

元组也有生成式,不过它的结果是一个生成器对象,它需要转成一个元组或者列表我们才可以看到内容

image.png 方法二

遍历过t不存在元素

image.png

元组和列表的区别

image.png

三、字典

image.png

  • 可变数据类型,具有增删改等的操作
  • 与列表不同的是,字典中的元素是无序的,所以你第一个添加到字典中的元素并不一定就是在第一位的
  • 并且字典中的键要求必须唯一,不能重复;但是值是可以重复的
  • 但是如果你写的时候键重复了,那么后面的会覆盖代替前面的
  • 要求字典中的键是不可变序列,所以哪些可以作为键呢?整型、字符型、浮点型、元组...都可以,

image.png

#1.直接使用{}创建字典
d={10:'cat',20:'dog',30:'pet',20:'zoo'}
print(d)  #key相同时,value值进行了覆盖

#2.zip函数
lst1=[10,20,30,40]
lst2=['cat','dog' , 'pet','zoo','car' ]
zipobj=zip(lst1,lst2)
print(zipobj) #<zip object at 0x000001ECD5A24F00>
#print(list(zipobj)) # [(10,'cat'),(20,'dog')(30,'pet'),( 40,'zoo')]
d=dict(zipobj)
print(d)# {10:'cat',20: 'dog', 30: 'pet ',40: 'zoo'

#3.使用参数创建字典
d=dict(cat=10, dog=20)#左侧cat是key ,右侧的是valueprint(d)
image.png

字典的取值(访问)和遍历

image.png
d={'hello':10,'world':20,'python':30}
#访问字典中的元素
#1.使用d[key]
print(d['hello'])
#2. d.get(key)
print(d.get('hello'))
#二者之间是有区别的,如果key不存在,d[key]报错d . get(key)可以指定默认值
#字典的遍历
#1.使用遍历循环for遍历字典元素
for item in d.items():
print(item)# key=value组成的一个元素
#2.在使用for箭环遍历时,分别获取key和value
for key , value in d.items():
print(key, '--->', value)

字典的相关操作方法

image.png 添加就是直接 d.[]=''

字典的生成式

image.png

image.png

四、集合

image.png

image.png

  • 如果你直接使用花括号创建s={},那么创建的就是字典而不是集合
  • 如果你想创建集合:s=set()用内置函数
#1.直接使用{}创建集合
s={10,20,30,40}
print(s)
#集合只能存储不可变数据类型

#2.使用set()创建集合
s=set()#创建了一个空集合,空集合的布尔值是Falseprint(s)

s=set('helloworld')
print(s)#无序且不重复

集合类型的操作符

image.png

image.png

集合的相关操作方法

image.png

集合的遍历

#1.使用遍历循环for遍历集合元素
for item in s:
    print(item)
#2.enumerate()函数
for index,item in enumerate(s)
    print(index,'-->',item)

集合的生成式

image.png

【几种数据类型区别】

image.png

python3.11新特性

image.png

data=eval(input('请输入要匹配的数据:'))
match data:
case {'name':'ysj','age':20}:
    print('字典')
case [10, 20,30]:
    print('列表')
case (10, 20,40):
    print("元组')
case _:
    print('相当于多重if中的else')

最后这个case_相当于else

image.png image.png

image.png

image.png

实战

实战一:千年虫

image.png

lst=[88,89,90,98,00,99]
print('原列表:',lst)
# 1.使用遍历循环for遍历列表元素
for index in range(len(lst)):
    if str(lst[index])!='0':
       lst[index]='19'+str(lst[index])
    else:
        lst[index] = '200' + str(lst[index])
print(lst)
# 2.enumerate
for index,value in enumerate(lst):
    if str(lst[index])!='0':
       lst[index]='19'+str(value)
    else:
        lst[index] = '200' + str(value)
print(lst)

实战二:模拟京东的购物流程

image.png

#首先创建一个空列表,用来存储入库的商品信息
lst=[]
#1.入库
for i in range(5):
    goods=input('请输入商品的编号和名称进行商品入库:')
    lst.append(goods)
#2输出所有商品信息(遍历)
for item in lst:
    print(item)
#3.创建一个空列表,用来存储购物车里面的商品
#当我输入q时结束,不然一直循环,所以选用无限循环while
cart=[]
while True:#意思就是一直去执行
    flag=False #代表没有商品的情况
    num=input('请输入你要购买的商品编号:')
    #4.遍历商品列表用来查询商品是否存在
    for item in lst:
        if num==item[0:4]:# 切片操作,从商品中切出序号,进行比较
            flag=True #代表商品已找到
            cart.append(item)#添加入购物车
            print('商品已成功添加入购物车')
            break #退出的是这个for循环
    if not flag and num!='q':#not flag也可以写成flag==False
        print('商品不存在')
    if num=='q':
        break #退出的是while

print('购物车里已选择的商品为:')
cart.reverse()
for item in cart:
    print(item)     

实战三;火车订票流程

image.png

 #创建字典用于存储车票信息,使用车次作为key,使用其他信息作为value
dict_ticket={
     'G1111':['北京南-天津南','18:06','18:39','00:33'],
     'G2222':['北京南-天津南','18:15','18:49','00:34'],
     'G3333':['北京南-天津西','18:20','18:53','00:36'],
     'G4444':['北京南-天津东','18:40','19:30','00:54']
 }
print('车次     出发地-到达站     出发时间      到达时间     历时时长')
 #遍历字典中的元素
for key in dict_ticket.keys():
      print(key,end='\t')#为什么不换行?因为车次和车次的详情信息在一行显示
      #根据key获取值是一个列表
      for item in dict_ticket.get(key): #根据key获取值
          print(item,end='\t\t')
      print()  #换行
#输入用户的购票车次
train_number=input('请输入要购买的车次:')
#根据key获取值
info=dict_ticket.get(train_number,'车次不存在')#info是一个列表类型
# 判断车次是否存在
if info!='车次不存在':
    person=input('请输入乘车人,如果是多位请用逗号分割:')
    s=info[0]+' '+info[1]+' '+'开'
    print('您已购买了'+train_number+' '+s+'请'+person+'尽快换取纸质车票。【铁路客服】')
else:
    print('对不起,车次不存在')

实战四:手机通讯录

image.png

#创建一个空集合
s=set()
#录入5位好友的姓名和手机号
for i in range(1,6):
    info=input(f'请输入第{i}位好友的姓名和手机号码:')
    #添加到集合中
    s.add(info)
#遍历集合
for item in s:
    print(item)