python第二天 列表、元组

时间:2023-03-08 16:45:59
python第二天 列表、元组

今天学习了列表、元组相关的知识:与C中的数组列表相似,元组为只读列表:

以及切片相关操作:

 #!usr/bin/env python
#-*-coding:utf-8-*-
# Author calmyan
#元组,列表
names=['zy','gy','xp',['2r','t3','t4'],'lh','xc']
print(names)
print(names[0],names[2])
print(names[1:3])#切片左往右
print(names[2])#切片
print(names[-1])#切片从后开始取
print(names[-2:])#切片左往右最后的省略
print(names)
names.append('lh')#追加
print('追加后;',names)
names.insert(3,'crh')#插入位置
print('插入位置后:',names)
names[2]='ggy'#修改
print('修改后:',names)
del names[2]
print('删除后:',names)
print('统计个数:',names.count('lh'))#统计内空个数
names_id=names.index('gy')#内容所在的下标
names_user=names[names.index('gy')]#下标所对应的内容
print(names_user)
print(names_id)
#names.clear()#清空列表
print('原序列打印:',names)
names.reverse()#反转列表
print('反转序列打印:',names)
#names.sort()#排号序默认为ACSII码表
print('排号后打印:',names) names2=[1,2,3,4,5,6]
names.extend(names2)#合并names2列表
print('合并后打印:',names)
print('第二列表:',names2)
import copy
names3=copy.deepcopy(names)#完全COPY
#names3=names.copy()#复制names列表 赋于names3 浅复制 子列表为指针地址
print('列表3',names3)
print('列表1',names)
names3[0]='修改1'
names3[3][1]='修改二层'
print('列表3',names3)
print('列表1',names)
for i in names:
print (i)
for i in range(names.__len__()):#__len__列表元素个数(长度)
if names[i]=='crh':
print(names[i])
print(i)
# for i in range(1,names.__len__(),2):
# print(i)
print(names[0:-1:2])#开始位 结束位 步长()
print(names[::2])#0和-1可以省略不写

import copy 浅层与深层COPY

 #!usr/bin/env python
#-*-coding:utf-8-*-
# Author calmyan
import copy
person=['name',['财务部','办公在六层']]
p1=copy.copy(person)#浅COPY
p2=person[:]#浅COPY
p3=list(person)#浅COPY
p1[0]='颜'
p2[0]='陈'
p3[0]='张'
person[1][1]='办公室改到七层'
print(person,p1,p2,p3)

最后是字符串相关的操作:

 #!usr/bin/env python
#-*-coding:utf-8-*-
# Author calmyan
#字符串操作
name="my name is {name} and age is {year}!"
name_1="Abc123AA bbr"
name_2=" "
names=name.format(name="calmyan",year=35)#格式化字符
print(names)
print(names.count("m"))#统计该字符串中指定字符的个数
print("添加TAB键的数量",names.expandtabs(tabsize=70))#添加TAB键的数量
print(name.endswith("!"))#判断是否以指定字符结尾
print(names.find("n"))#返回字符所在索引
print(names[names.find("n"):names.find("!")])#返回字符所在索引,可进行切片操作
print("判断类:")
print("是否是在字母大小写和数字之间的范围:",name_1.isalnum())#是否是在字母大小写和数字之间的范围
print("是否是在字母大小写之间的范围:",name_1.isalpha())#是否是在字母大小写之间的范围
print("是否是在十进制整数的范围:",name_1.isdecimal())#是否是在十进制整数的范围
print("是否是在整数的范围:",name_1.isdigit())#是否是整数的范围
print("是否是在整数的范围:","".isnumeric())#是否是整数的范围
print("是否是空格:",names.isnumeric())#是否是空格
print("是否是大写开头:",name_1.istitle())#是否是大写开头
print("是否是全为大写:",name_1.isupper())#是否是全为大写
print("指定字符对字符串进行分割(每个字符):")
print(" ".join(names))#用指定字符对字符串进行分割,包括空格
print(names.ljust(50,"*"))##指定该字符串的长度,不足用指定字符右端补齐
print(names.rjust(50,"*"))##指定该字符串的长度,不足用指定字符左端补齐
print(name.center(50,"="))#指定该字符串的长度,不足用指定字符两端补齐,字符串居中
p=str.maketrans("abcdefg","")#两个字符串进行一一对应替换
print(p)
print("gfedcba".translate(p))#传入将会显示对应的字符
print("对指定字符进行替换:",name_1.replace("A","a"))#对指定字符进行替换,可选定数量,参数不填默认为全部
print("对指定字符进行替换:",name_1.replace("A","a",2))#对指定字符进行替换,可选定数量
print("查找最右边的指定字符:",name_1.rfind(""))#查找最右边的指定字符,返回索引下标
print("按指定字符进行分割:",name_1.split(""))#按指定字符进行分割,字符串中指定字符去除
print("按换行进行分割:",name_1.splitlines())#按换行进行分割
print("字母大小写互换:",name_1.swapcase())#字母大小写互换
print("首字母大写:",name_1.title())#首字母大写
print(name_2.zfill(5))#指定字符串长度,不足左边用0补位 二进制运算

模拟购物车

分享出来,共同进步!

 #!usr/bin/env python
#-*-coding:utf-8-*-
# Author calmyan
#name_char=int(input("请输入工资(购物资金):"))#用户输入工资(购物资金)
#商品列表
goodsname=[('手机',2300),
('笔记本电脑',3500),
('平板电视',3900),
('电冰箱',1300),('电磁炉',500)
]
#goodsname=['1',]
#购物车列表
shoplist=[]
#购物统计
shop_count=0
#用户列表
#user_shoplist=['用户名']
while True:
name_char=input("请输入工资(购物资金):")#用户输入工资(购物资金)
if name_char.isdigit():#检测输入是否为整数
name_char=int(name_char)#转为int
break
else:
print('金额不能为0或负数请正确输入金额!')
continue
while True:
#for i in goodsname:
for index,item in enumerate(goodsname):#取出下标输出
print(index,item)
#print(goodsname.index(i),i)
# break
user_index=input('请输入商品编号添加你所在购买的商品,按用\033[31;1mq/Q\033[0m退出>>>:')
if user_index.isdigit():
user_index=int(user_index)
if user_index < len(goodsname) and user_index>=0:#判断所选商品编号在在列表
p_item=goodsname[user_index]#读取下标所在(元素)商品
if p_item[1]<=name_char:#余额是否足够
shoplist.append(p_item)#添加到购物车
name_char-=p_item[1]#扣除金额
shop_count+=p_item[1]#累加购物金额
# print(type(name_char))
#print(shop_count)
print("添加 %s 到购物车,你的购物金额余 \033[31;1m%s\033[0m 元"% p_item,name_char)
else:
print("你的购物金额余 \033[41;1m%s\033[0m 元,无法购买该商品" % name_char)
else:
print('输入错误,该编号 %s的商品不存在!',user_index)
elif user_index=='q'or user_index=='Q':
for up in shoplist:#打印购物清单
print('你的购物清单:',up)
print("你的购物总金额为:\033[32;1m%s\033[0m 元!"% shop_count)
print("你的购物金额余: \033[31;1m%s\033[0m 元!" % name_char)
while True:
confirm=input('你是否确定退出购物?Y/y是 N/n否:')
if confirm== 'Y' or confirm== 'y':
exit(print("谢谢!欢迎您再次光临!"))
elif confirm=='N'or confirm== 'n':
break
else:
print("输入错误!请按提示输入!")
continue
else:
print('输入商品编号错误,请重新输入!')
 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
#
#列表、元组操作
# ' ' 在python里 ' ' 里的内容为 '字符串' 。不加 ' ' 为变量名
#print()打印 # 英文名字大全 http://ename.dict.cn/list/all/M names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy'] #通过下标访问列表中的元素,下标从0开始计数
print('---通过下标访问列表中的元素----') print(names[0])
print(names[1],names[3],names[4])
print(names[-1])
print(names[-2]) #还可以倒着取
print(' ') print('---切片:取多个元素---')
print(names[1:4]) #取下标1至下标4之间的数字,包括1,不包括4
print(names[1:-1]) #取下标1至-1的值,不包括-1
print(' ') print('---切片:取下标1至-1的值,不包括-1---')
print(names[0:3]) #取下标1至-1的值,不包括-1
print(names[:3]) #如果是从头开始取,0可以忽略,跟上句效果一样
print(' ') print('---参数默认是0,-1就是倒数第1个----')
print(names[:3]) #如果想取最后一个,必须不能写-1,只能这么写
print(names[3:-1]) #这样-1(最后一个)就不会被包含了
print(' ') print('---参数默认是0----')
print(names[0:5:2]) #后面的2是代表,每隔一个元素,就取一个,默认是1
print(names[::3]) #参数默认是0,所以可以不写
print(' ') print(' ')
print('---追加names.append('')---每次只能追加一个')
names.append('我是新来的',)
print(names)
print(' ') print(' ')
print('---插入names.insert(下标号,名字)---每次只能插入一个')
names.insert(3,'强行插队到下标位置3')
print(names)
print(' ') print(' ')
print('---修改names[下标号]---')
names[5] = '修改换人了'
print(names)
print(' ') print(' ')
print('---删除names.remove('')---')
print(names)
names.remove('Eric')#删除指定元素名字
print(names)
print(' ') print('---删除names.pop(下标号)---')
print(names)
names.pop(2)#删除指定列表中下标的值,默认-1
print(names)
print(' ') print(' ')
print('---拷贝names.copy()---')
print(names)
name_copy = names.copy()
print(name_copy)
print(' ') print(' ')
print('---排序names.sort()和翻转names.reverse()---')
print('3.0里不同数据类型不能放在一起排序了')
print(names)
names.sort()
print(' ')
print(names)
names.reverse()
print(' ')
print(names) print(' ')
print('---扩展names.extend(下标号)---')
print('---数字默认为字符串""可以不加,但是数据类型却是整数--')
print(names)
b = ['',9,'Amy','Amy','b的扩展']
names.extend(b)
print(names)
print(' ') print(' ')
print('---统计names.count(' ')---')
print(names)
cut = names.count('Amy')
print(' ')
print(cut)
print(' ') print(' ')
print('---获取下标names.index(' ')---')
print(names)
idx = names.index('Amy')
print(' ')
print(idx)
print(' ')

列表的使用与测试

 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
#元组
#元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
#它只有2个方法,一个是count,一个是index,完毕。 #列表的写法
name = ['Cahill','Teenglan','Eric','Amy','Amy','Amy','',''] #元组的写法
names = ('Cahill','Teenglan','Eric','Amy','Amy','Amy','Amy','Amy') print(' ')
print('---统计names.count(' ')---')
print(names)
cut = names.count('Amy')
print(' ')
print(cut)
print(' ') print(' ')
print('---获取下标names.index(' ')---')
print(names)
idx = names.index('Amy')
print(' ')
print(idx)
print(' ') #元组不能追加等操作,会报错。
names.append('新加')

元组的使用

 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎交流py

 #列表、元组操作浅copy(复制文件的快捷方式)和深copy(复制文件)

 #  names<变量名>  print()<打印>

 names = ['Cahill','Teenglan','Eric','Peggie','Aalto','Baal','Sadie',
'Gage','Hagan','Jack','Kaley','Mabel','Lacy','Nadine','Pace','Amy'] print('---原来列表的内容---')
print(names)
print(' ')
name2 = names.copy() print('---拷贝后列表的内容---')
print(name2)
print(' ') print('---修改拷贝后列表里的内容---')
names[2] =['修改了']
print(names)
print(' ')
print('---对比两个文件的内容---')
print(name2) print(' ')
print('---列表打印-----------------------------------------------------')
print(' ') print('----跳跃打印不写默认值---- ')
print(names[:]) print(' ')
print('---跳跃打印---起始默认0:终止默认-1:跳跃默认1,默认值可以不写')
print(names[1:-3:2]) print(' ')
print('---列表循环打印---for i in names:--- ')
print(' ')
for i in names:
print (i) print(' ')
print(' ')
print('---新的实验浅pocy的用法----------------------------------------------------------------------------------------------------------------------------------------')
print(' ')
print('---重新定义列表,在列表里添加列表---')
name = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy'] print(name)
print(' ') print(' ')
name3 = name.copy()
print('---拷贝后列表的内容---')
print(name3)
print(' ') print('---修改拷贝后列表里的内容---')
name[1] =['改第一层']
name[2][1] =['第二层']
name[2][2][0] =['列表里第三层']
print(name)
print(' ')
print('---对比两个文件的内容---')
print(name3)
print(' ') print('浅pocy 只复制第一层内容,第二层开始只复制其快捷方式')
print(' ') print(' ')
print('---深copy的使用---copy.deepcopy(namett)------完全多层复制---尽量不用------------------')
print(' ') import copy
namett = ['Cahill','Peggie',['Ursula','Val',['Zena','Babb','Eric'],'Teenglan',],'Amy']
print('---重新定义列表---')
print(namett)
nameff = copy.deepcopy(namett)
print('---拷贝后列表的内容---')
print(nameff)
print(' ') print(' ')
print('---修改拷贝后列表里的内容---')
namett[1] =['改第一层']
namett[2][1] =['第二层']
namett[2][2][0] =['列表里第三层']
print(namett)
print('---对比两个文件的内容---连第二第三层都没有跟着修改---')
print(nameff)
print(' ') print(' ')
print('---深copy的使用---完全多层复制-------尽量不用----------------------------------')
print(' ') print(' ')
print('---新的实验-数值的pocy------------------------------------------------------------')
print('数值的pocy---------------------------------------------------------')
a = 1
b = a
print(a)
print(' ')
print(b)
print(' ') print('重新定义a后的对比')
a = 2
print(a)
print(' ')
print(b)
print(' ') print(' ')
print(' ')
print('---浅copy的用法-----------------------------------------------------------')
print(' ')
#import<调用> copy<函数拷贝模块> list()<列表> print()<打印> import copy
person=['name',['saving',100]] p1=copy.copy(person)
p2=person[:]
p3=list(person) print(p1)
print(' ')
print(p2)
print(' ')
print(p3)
print('-----------------------------------------------------------------------------------') #
#列表、元组操作

浅copy(复制文件的快捷方式)和深copy(复制文件)

浅copy歪解

创建一个列表    等于图一

names = [['Eric','Jack']'Alex','Cahill','Rain','Tenglan','Aalto','Toml',]

浅copy    等于图二   浅pocy 只复制第一层内容,第二层开始只复制其快捷方式

name3 = name.copy()

图一

python第二天 列表、元组python第二天 列表、元组

图二

python第二天 列表、元组python第二天 列表、元组