上节课作业的参考答案:
- # 课堂训练
- products = [["iphone", 6888], ["MacPro", 14888], ["小米6", 2499], ["Book", 60], ["Nike", 690]]
- print("--------- 商品列表 ----------")
-
- i = 0
- for product in products:
- i = i + 1
- print(i," " + product[0] + " ", product[1])
-
- products1 = []
- while True:
- goodsNum=input("请输入要选择的商品编号(如退出购买选择q):")
- if goodsNum == "1":
- products1.append(products[0])
- if goodsNum == "2":
- products1.append(products[1])
- if goodsNum == "3":
- products1.append(products[2])
- if goodsNum == "4":
- products1.append(products[3])
- if goodsNum == "5":
- products1.append(products[4])
- if goodsNum=="q":
- print("--------- 您购买的商品如下 ----------")
- for product in products1:
- print(product[0] + " ", product[1])
- break
元组(Tuple)是一种集合方式,但是展现方式是以()形式,如:(1,2,3)所以在查询使用时可以遍历,可以下标获取某个元素,字典学过程序都知道,其实就时map结构,key,value形式存储
tuple=()代表元组类型
- tuple=();
- print(type(tuple))
-
- # 运行结果:
代表是元组对象
要注意的是元组里只有一个元素时需要加上逗号,否则就不是元组类型,就是普通的括号里展示的类型,如:tuple=(50),打印类型以后则是int类型,修改为tuple2=(50,)则是元组类型
- tuple=(50);
- print(type(tuple))
-
- #tuple1=(50); #
这样写就不是tuple了,就给解析成int类型了 - tuple2=(50,);
- print(type(tuple2))
运行结果:

根据下标获取元素
- tup1=("abc","def",2000,2020)
- print(tup1[0]) # 根据下标获取第一个元素
-
- # 结果:abc
可以用负数获取-1则获取最后一个 ,-2是2000,-3是def,-4是abc,-5就报错了,指针超了
- tup1=("abc","def",2000,2020)
- print(tup1[-1]) # 获取最后一个元素
-
- # 结果:2020
也可以获取指定哪个到哪个范围区间的下标
- tup1=("abc","def",2000,2020)
- print(tup1[0:3]) # 获取指定0-3区间元素,左开右闭
-
- # 结果:('abc', 'def', 2000)
当然也可以遍历使用
- tup1=("abc","def",2000,2020)
- for t in tup1:
- print(t)

添加:一旦创建元组,则不可以添加元组元素,否则报错,可以元组与元组之间合并数据,
- tup1=(12,34,22)
- tup2=("a","b")
- tup=tup1+tup2
- print(tup)
-
- # 运行结果:(12, 34, 22, 'a', 'b')
修改:元组不支持修改
- tup1=(12,34,22)
- tup1[0]=7
运行一下:

元组不可以删除元素,只能整个变量删除,删除完毕在使用会报错
- # 元组删除
- tup1=(12,34,22)
- del tup1 # 删除整个元组变量,而不是某个元素
- print(tup1) #del元组以后打印变量会报错,name 'tup1' is not defined
总结:元组的增删改其实是都不允许的,只能够遍历获取等,在实际使用中有时获取的数据库数据等会是元组的形式返回,则需要遍历获取等操作。
字典就和java里的map是一样的格式,python比java还多了其他访问方式,
根据键获取值的一种方式,如果拿一个不存在的键获取值则报错
- info={"name":"xiaoduf","age":12}
- print(info["name"]) #根据健获取值
- print(info["age"])
-
-
- # 结果
- '''
- xiaoduf
- 12
- '''
再获取一个性别,字典里是没有的,则会报错
print(info["gender"]) #访问了一个不存在的key会报错

还可以和java一样,用info.get("键")获取值,获取一个不存在的key值不会报错,会返回None,也可以通过第二个参数设置默认的值
- info={"name":"xiaoduf","age":12}
- print(info.get("gender")) # 访问了一个不存在的key不会报错,默认会返回None
- print(info.get("gender","null")) # 访问了一个不存在的key可以自定义一个默认的值
- print(info.get("age","33")) # 能找到不会用默认值
-
- # 结果:
- '''
- None
- null
- 12
- '''
- info={"name":"xiaoduf","age":12}
- info["id"]="100001"
- print("字典新增:",info)
-
- info={"name":"xiaoduf","age":12}
- info["id"]="2222"
- print("字典修改:",info)
-
- # 运行结果:字典修改: {'name': 'xiaoduf', 'age': 12, 'id': '2222'}
del和pop都是指定健删除某个键值对信息
- info={"name":"xiaoduf","age":12}
- print("删除前:%s "%info)
- del info["name"] # 删除的是键值对
- info.pop("age") # 删除的是键值对
- print("删除后:%s:"%info)
结果:
如果del 删除变量,则整个变量不允许访问,但是可以用clear它只会把数据清空,还可以继续使用变量
- info={"name":"xiaoduf","age":12}
- info.clear()
- print(info) #清空数据还有变量
-
- 结果:{}
可以通过keys()方法获取所有的key,然后通过for循环遍历得到每一个key
- info={"name":"xiaoduf","age":12}
- print(info.keys()) # 得到所有的健,以列表形式,后续可自己遍历
-
- # 遍历所有的key
- for key in info.keys():
- print("key:",key)
-
-
- # 运行结果:
- '''
- dict_keys(['name', 'age'])
- key: name
- key: age
- '''
可以通过values()方法获取所有的值,然后通过for循环遍历得到每一个值
- info={"name":"xiaoduf","age":12}
- print(info.values()) # 得到所有的值,列表形式
-
- # 遍历所有的值
- for value in info.values():
- print("value:",value)
-
- # 运行结果:
- '''
- dict_values(['xiaoduf', 12])
- value: xiaoduf
- value: 12
- '''
可以通过items()方法获取到键值项,进行遍历得到键值,这样一起得到key和value
- info={"name":"xiaoduf","age":12}
- print(info.items()) # 得到所有的项,最后形式是每一个键值对是一个元组
-
- for key,vlaue in info.items():
- print("%s:%s"%(key,vlaue))
-
- # 运行结果:
- '''
- dict_items([('name', 'xiaoduf'), ('age', 12)])
- name:xiaoduf
- age:12
- '''
在python中集合Set格式形式是花括号表达,无索引,除里这个和其他语言相似,过率重复元素,无序集合
1. 可以花括号直接定义,可以set([1,,2,3])定义,打印它两的类型都是set集合,当然打印数据也是花括号展现形式
- # set和dict类似,也是一组key的集合,但不存储value,key不能重复,是无需的,重复会自动过率掉
- sets={"s","s","e"}
- print(type(sets))
- sdatas=set([1,2,3])
- print(type(sdatas))
- print(sdatas)
-
- #运行结果:
- '''
- print(sdatas)
- '''
重复的数据可直接去重展示
- sdatasRep=set([1,2,3,1,2])
- print(sdatasRep)
-
- # 运行结果:{1, 2, 3}
当然了和其他的所有一样,想要得到所有的数据遍历即可
- sdatas=set([1,2,3])
- for s in sdatas:
- print(s)
其实都大同小异的,所以就快速的说下Set怎么使用
添加通过add()
- sdatas=set([1,2,3])
- sdatas.add(4)
- # sdatas结果是:{ 1, 2, 3, 4}
Set不允许修改集合元素,可以把两个Set合并,通过update()方法实现
- sdatas=set([1,2,3])
- sdatas1=set([4,5,6])
- sdatas.update(sdatas1)
- print(sdatas)
-
- # sdatas结果是:{1, 2, 3, 4, 5, 6}
删除:remove(),pop(),clear(),del
remove()删除指定元素
- sdatas=set([1,2,3])
- sdatas.remove(3) #移除选中的元素不是下标,没有这个元素会报错
- print(sdatas)
-
- # 运行结果:{1, 2}
pop()则清除元素第一个元素
- sdatas=set([1,2,3])
- sdatas.pop() #清除第一个元素
-
- # sdatas结果是:{2, 3} ,
clear清空数据
- sdatas.clear() #清空数据
- print(sdatas)
-
- # sdatas结果是:set()
del 则是删除元素变量,删除完毕则不可使用了