Python语法--元组、字典、Set

上节课作业的参考答案:

# 课堂训练
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形式存储

1.元组的定义和访问                                                                    

1.1 元组的定义

tuple=()代表元组类型

tuple=();
print(type(tuple))

# 运行结果:  <class 'tuple'>   代表是元组对象

要注意的是元组里只有一个元素时需要加上逗号,否则就不是元组类型,就是普通的括号里展示的类型,如:tuple=(50),打印类型以后则是int类型,修改为tuple2=(50,)则是元组类型

tuple=(50);
print(type(tuple))

#tuple1=(50);   #<class 'int'> 这样写就不是tuple了,就给解析成int类型了
tuple2=(50,);
print(type(tuple2))

运行结果: 

 1.2 元组的访问

根据下标获取元素

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)

2. 元组增加修改操作                                                                   

添加:一旦创建元组,则不可以添加元组元素,否则报错,可以元组与元组之间合并数据,

tup1=(12,34,22)
tup2=("a","b")
tup=tup1+tup2
print(tup)

# 运行结果:(12, 34, 22, 'a', 'b')

 修改:元组不支持修改

tup1=(12,34,22)
tup1[0]=7

运行一下:

3.元组删除                                                                               

元组不可以删除元素,只能整个变量删除,删除完毕在使用会报错

# 元组删除
tup1=(12,34,22)
del tup1     # 删除整个元组变量,而不是某个元素
print(tup1)  #del元组以后打印变量会报错,name 'tup1' is not defined

 总结:元组的增删改其实是都不允许的,只能够遍历获取等,在实际使用中有时获取的数据库数据等会是元组的形式返回,则需要遍历获取等操作。

4.字典

4.1 字典的访问

字典就和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
'''

4.2 字典的新增、修改

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'}

 4.3 字典删除

del和pop都是指定健删除某个键值对信息

info={"name":"xiaoduf","age":12}
print("删除前:%s "%info)
del info["name"] # 删除的是键值对
info.pop("age") # 删除的是键值对
print("删除后:%s:"%info)

结果:

 4.4 字典清空数据

如果del 删除变量,则整个变量不允许访问,但是可以用clear它只会把数据清空,还可以继续使用变量

info={"name":"xiaoduf","age":12}
info.clear()
print(info) #清空数据还有变量

结果:{}

4.5 字典遍历和查询

可以通过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
'''

5.集合SET                                                                                   

在python中集合Set格式形式是花括号表达,无索引,除里这个和其他语言相似,过率重复元素,无序集合

5.1 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)

#运行结果:
''' 
<class 'set'>
<class 'set'>
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)

5.2 添加、删除、更新

其实都大同小异的,所以就快速的说下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 则是删除元素变量,删除完毕则不可使用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值