Python基础学习笔记3

一、Python中的索引

序列

  • 序列是一个用于存储多个值的连续空间,每个值对应一个整数的编号,称为索引
  • 序列结构主要有列表、元组、集合、字典和字符串

索引

  • 正向递增索引,取值范围[0,N-1]
  • 反向递减索引,取值范围[-1,-N]
    索引

二、序列的相关操作

1.切片操作

语法结构:序列[start: end: step]
start:表示切片开始位置(包括开始位置),若不指定,默认0(冒号不可省略)。
end:表示切片结束位置(不包括结束位置),若不指定,默认为序列长度。
step:表示步长,如果省略,默认1,当省略步长时,最后一个冒号可以省略。步长可以为负数,实现逆向拷贝。

2.序列的相加和相乘

  1. 相加

使用“+”实现两个同类型序列的相加操作,不会去除重复元素

  • 序列的类型要求是相同的,但是序列中元素的类型可以是不同的
  1. 相乘
    使用一个数字n乘以一个序列,将生成一个新的序列,新序列中的内容会被重复n次

3.序列的相关操作符与函数

操作符

三、列表

列表:
·一系列的按照特定顺序排列的元素组成
·Python中内置的可变序列
·使用[]定义列表,元素之间使用逗号分隔
·元素可以是任意的数据类型

列表的创建:

  • 列表名=[e1,e2,…eN]
  • 列表名=list(序列)

列表的删除:del 列表名

若列表中只有一个元素,逗号可以省略

列表元素的遍历
1.使用for
2.使用for与range()函数和len()函数组合遍历
3.使用for与enumerate()函数组合遍历元素和索引

for index,item in enumerate(lst):
	输出index和item
#index:用于保存元素的索引
#item:用于保存获取到的元素值

for i in range(len(lst)):
	print(i, '-->', lst[i])

for index,item in enumerate(lst):#默认序号从0开始
	print(index, item)

for index,item in enumerate(lst, 1):#序号从1开始
	print(index, item)

3.1列表的相关操作方法

和列表和字符串的区别:字符串没有增、删、改的方法
列表的方法

  1. id()函数:返回对象的内存地址
  2. sort()函数:对原列表中的元素进行排序,排序之后原列表中元素的顺序将发生改变
lst.sort(key=None, reverse=Flase)#False升序,True降序
  1. 内置的sorted()函数:原列表元素顺序不变,排序后产生一个新的列表对象
sorted(iterable,key=None,reverse=False)
#忽略大小写排序,不然先排大写,再排小写
lst.sort(key=str.lower)
new_lst2 = sorted(lst2,key=str.lower) 
lst = [1,3,5,7,9]
print(lst.reverse())#输出None,因为reverse()不会生成新的列表

3.2列表生成式

#生成指定范围的数值列表
lst = [item for item in range(1,11)]
lst = [item*item for item in range(1,11)]#输出1,4,9...
lst = [random.randint(1,100) for _ in range(10)]#可以不要随机变量,用_代替

#从列表中选择符合条件的元素组成新的列表
lst = [i for i in range(10) if i%2==0]

3.3二维列表

#列表生成式生成一个四行五列
lst = [[j for j in range(5)] for i in range(4)]

四、元组

列表:
·一系列的按照特定顺序排列的元素组成
·Python中的不可变序列
·使用()定义,元素之间使用逗号分隔
·元素可以是任意的数据类型

元组的创建:

  • 元组名=[e1,e2,…eN]
  • 元组名=tuple(序列)

元组的删除:del 元组

  • 若元组中只有一个元素,逗号不能省略(t=(10),t的数据类型为int)

元组元素的遍历(与列表的遍历方式相同)
1.使用for
2.使用for与range()函数和len()函数组合遍历
3.使用for与enumerate()函数组合遍历元素和索引

for item in t:
	print(item)

for i in range(len(t)):
	print(i, t[i])

for index,item in enumerate(t):#默认序号从0开始
	print(index, item)

for index,item in enumerate(t, 1):#序号从1开始
	print(index, item)

4.1元组生成式

  • 与列表生成式的语法相同
  • 元组生成式的结果是一个生成器对象,需要转换成元组或列表才能查看到元素内容(与列表生成式不同)
  • 生成器遍历之后,再想重新遍历必须重新创建一个生成器对象,因为遍历之后原生成器对象已经不存在了(与列表生成式不同)
t = (i for i in range(1,4))#t=(1,2,3)
print(t)#输出的不是元组,是生成器对象

t=tuple(t)
print(t)#输出元组

#遍历元组生成式
#1.for循环遍历
for item in t:
	print(item)
	
#2.__next__()方法
print(t.__next__())#取出1
print(t.__next__())#取出2
print(t.__next__())#取出3
t = tuple(t)
print(t)#输出()

4.2元组与列表的区别

列表and元组

五、字典

键值对:根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成的成对的关系

字典的特征:

  • 通过键从字典中获取指定的项,但不能通过索引来获取
  • 字典是无序的,也被称为hash表(散列表)
  • 是Python中的可变序列
  • 字典中的键必须唯一,如果出现两次,后出现的将覆盖先出现的
  • 字典中的键要求是不可变序列

字典的创建:

  • d={key1:value1,key2:value2…}
  • 通过映射函数创建字典:zip(lst1,lst2)
  • 通过给定关键字创建字典:dict(key1=value1,key2=value2…)
#1.直接使用{}
d = {10:'cat',20:'dog',30:'pet',20:'zoo'}
print(d)#输出{10:'cat',20:'zoo',30:'pet'}

#2.zip函数的使用
lst1 = [10,20,30,40]
lst2 = ['cat','dog','car','zoo']
zipobj = zip(lst1,lst2)#映射函数的结果是一个zip对象
print(zipobj)
print(list(zipobj))#输出列表
d = dict(zipobj)
print(d)#输出字典

#3.使用参数创建字典
d = dict(cat=10,dog=20)#PS:参数相当于变量,变量的名字不加引号
print(d)#输出{'cat':10,'dog':20}

t = (10,20,30)
print({t:10})#输出{(10,20,30):10}

字典的删除:del 字典名

5.1字典元素的访问和遍历

  • 字典元素的访问
    d[key] 或者 d.get(key)

  • 字典元素的遍历

for element in d.items():
	pass

for key,value in d.items():
	pass
d = {'hello':10,'world':20,'python':30}
#访问字典中的元素
#1.使用[key]
print(d['hello'])
#2.使用d.get(key)
print(d.get('hello'))

#二者有区别,如果键不存在时,d[key]报错,d.get(key)可以指定默认值
print(d['java'])#KeyError:'java'
print(d.get('java'))#输出 None
print(d.get('java','不存在'))#输出 不存在
#字典的遍历
for item in d.items():
	print(item)#key-value组成的一个元组

#在使用for时,分别获取key和value
for key,value in d.items():
	print(key,value)

5.2字典的相关操作

字典的相关操作

d = {1001:'李梅',1002:'王华',1003:'张锋'}
#向字典中添加数据
d[1004] = '张丽丽'#直接运用赋值运算符=向字典中添加元素

#获取字典中所有的key
keys = d.key()#结果是dict_keys,Python中的一种内部的数据结构,专用于表示字典的key
#如果希望更好的显示数据,可以使用list或者tuple转成相应的数据类型

#获取字典中所有的value
values = d.value()
print(values)#dict_values
print(list(values))
print(tuple(values))

#字典遍历时用到的一个方法items
items = d.items()#dict_items
print(items)
print(list(items))
print(tuple(items))

lst = list(items)#将字典中的数据转成键-值对的形式,以元组的方式进行展示
#可以直接使用dict函数将lst转成字典
d = dict(lst)

#pop函数
print(d.pop(1008,'不存在'))#如果key不存在,结果输出默认值“不存在”,不会报错

#popitem函数
print(d.popitem())#先获取键值对,再删除,输出{1004:'张丽丽'}
print(d)#输出{1001:'李梅',1002:'王华',1003:'张锋'}

5.3字典生成式

#使用指定范围的数作key
d = {key:value for item in range}
#使用映射函数生成字典
d = {key:value for key,value in zip(lst1,lst2)}
import random
#1.
d= {item:random.randint(1,100) for item in range(4)}

#2.
lst = [1001,1002,1003]
lst2 = ['陈','王','李']
d = {key:value for key,value in zip(lst,lst2)}

六、集合

集合:
·Python中的集合与数学中的集合概念一致
·集合可分为可变集合set与不可变集合frozenset
·集合与字典中Key一致都是无序的
·集合中的元素要求唯一
·集合中只能存储不可变数据类型(字符串、整数、浮点数、元组)
·集合使用{}定义,元素之间使用逗号分隔

集合的创建:

  • s={}(直接用{}创建,如果为空,为字典类型)
  • s=set()(可以创建空集合)
s = set('hello')#输出{'h','o','e','l'}

集合的删除:del 元组

6.1集合的操作符

A = {1020304050}
B = {3050887620}
#交集
print(A&B)
#并集
print(A|B)
#差集
print(A-B)
#补集
print(A^B)

6.2集合的相关操作方法

集合的相关操作方法

6.3集合的遍历

for item in s:
	print(item)

for index,item in enumerate(s,10):#10表示的是序号,不是索引,从几开始可以自定义
	print(index,item)#index不是索引,表示序号

6.4集合生成式

s = {i for i in range(10)}
s = {i for i in range(10) if i%2}#输出奇数

七、组合数据类型总结

组合数据类型的区别

八、实战——千年虫

lst = [88, 89, 90, 98, 00, 99]#员工的两位整数出生年份
print('原列表:', lst)
#遍历列表
# 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)

#使用enumerate
for index,value in enumerate(lst):
    if str(value)!='0':
        lst[index] = '19' + str(value)
    else:
        lst[index] = '200' + str(value)
print(lst)

九、实战——京东购物模拟

#创建一个列表,用于存储入库的商品信息
lst = []
for i in range(5):
    goods = input('请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:')
    lst.append(goods)
#输出所有的商品信息
for item in lst:
    print(item)

#创建一个空列表,用于存储购物车中的商品
cart = []
while True:
    flag = False#代表没有商品的情况
    num = input('请输入要购买的商品编号:')
    #遍历商品列表,查询要购买的商品是否存在
    for item in lst:
        if num==item[0:4]:#item[0:4]切片得到编号
            flag = True  # 代表找到商品的情况
            cart.append(item)#添加到购物车列表
            print('商品已成功添加到购物车')
            break#退出for循环
    if not flag and num!='q':
        print('该商品不存在')
    if num=='q':
        break#退出while循环

print('您购物车里已选择的商品为:')
#反向
cart.reverse()
for item in cart:
    print(item)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值