1.元组
元组介绍
元组也是一个序列结构,但是是一个不变的序列。除了内部元素不能修改以外,元组几乎和列表相同。
元组创建
· 用()
创建元组可以用()直接创建。实质是定义python使用的数据结构类型。
示例:
tup=("sword", "art", "online")
· 用tuple()进行创建
使用tuple()
来创建,括号中的内容为序列元素。
示例:
tup=tuple("刀剑神域")
li=["sword", "art", "online"]
tup_2=tuple(li)
print(tup)
print(tup_2)
#==>('刀', '剑', '神', '域')
#==>('sword', 'art', 'online')
· 注意:
当创建只有单个元素的元组时,需要在元素后面加一个英文逗号",",否则不会被认为是元组。
示例:
tup=("sao",)
tup_2=("sao")
print(tup)
print(tup_2)
#==>("sao")
#==>sao
元组与列表相同的操作
- 使用方括号加下标访问元素
- 切片(形成新元组对象)
- python内置函数:
- 统计元素个数:tuple.count()
- 返回索引:tuple.index()
- 排序:sorted()
- 反转:reversed()
- 加法及乘法
详情见另一篇博客:链接
元组中不允许的操作
- 不允许 修改 、新增 元素。(一级)
- 不允许 删除 某个元素(但可以删除整个元组)
注意:
- 虽然无法对元组进行修改,但是可以对元组重新赋值,达到修改元组的目的。
- 元组不具有append,extend,remove,pop,index等这些方法或类似的方法。
- 由于元组不可变,因此相比于列表,元组的运算速度比较快。
元组与列表的区别
- 元组不能增、删、改。
- 元组的处理速度要比列表快,当程序中只对序列进行访问时,元组更具有优势。
- 元组和列表都支持切片操作,但是元组只支持切片访问。
- 元组可以作为字典的键值,而列表不行。
元组与列表之间的转换
- 列表——>元组:tuple(list)
- 元组——>列表:list(tuple)
2.字典
字典介绍
Python 的字典数据类型是基于 hash 散列算法实现的,采用 键值对 (key:value) 的形
式,根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。它是一种 可变
对象 ,所以支持修改、插入、删除等操作。
字典的创建
· 用{}
创建字典可以用{}直接创建。其格式为:name={key1:value1,key2:value2}
示例:
di={}
di_2={"name":"kirito", "age":"16"}
· 用dict()
使用dict()
创建也有两种方法。
方法一:
格式为:dict(key1=value, key2=value2)
di=dict(name="kirito", age="16")
方法二:
格式为:dict([(key1, key2), (value1, value2])
di=dict([("name", "age"), ("kirito", 16)])
· 拓展:
map(func,*iterables):
将 iterables 里面的元素逐个传到 func 里面做处理。
- 示例:
"""将list("12345")中的元素全部转为int类型。"""
li=list("12345")
print(li)
print(list(map(int,li)))
#==>["1", "2", "3", "4", "5"]
#==>[1,2,3,4,5]
- 用map进行字典的创建:
ke=["name", "age"]
va=["kirito", 16]
def dic(k,v):
return (k,v)
print(dict(map(dic,ke,va)))#==>输出为{'name': 'kirito', 'age': 16}
zip(iter1 [,iter2 […]]):
将iter1 iter2 中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
- 示例:
li_1=["name", "age"]
li_2=["kirito", 16]
print(list(zip(li_1,li_2)))#==>[('name', 'kirito'), ('age', 16)]
#看得出,name和kirito下标对应,age和16下标对应
- 用zip进行字典的创建:
li_1=["name", "age"]
li_2=["kirito", 16]
print(dict(zip(li_1,li_2)))#==>{'name': 'kirito', 'age': 16}
字典的查、增、删、改
· 字典的查询
在Python中,字典使用key值来查询。其格式为:dict[key]
示例:
di={"name":"kirito", "age":16}
print(di["name"])#==>输出为kirito
· 字典的增加
增加就是往字典插入新的键值对,直接进行赋值即可。其格式为:dict[key]=value
示例:
di={"name":"kirito", "age":16}
print(di)#==>{"name":"kirito", "age":16}
di["sex"] = "男"
print(di)#==>{"name":"kirito", "age":16, "sex":"男"}
· 字典的修改
修改就是给原有的键赋予新的值。由于一个 key 只能对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值覆盖掉。
示例:
di={"name":"kirito", "age":16, "sex":"女"}
di["sex"] = "男"
print(di)#==>{"name":"kirito", "age":16, "sex":"男"}
di_2={"name":"kirito", "age":16, "sex":"女", "sex":"男"}
print(di_2)#==>{"name":"kirito", "age":16, "sex":"男"}
· 字典的删除
方法 | 功能 |
del dict[key] | 删除指定key的元素 |
dict.pop(key) | 删除指定key的元素(在字典中,pop必须传入key参数) |
del dict | 删除字典 |
dict.clear() | 清空字典 |
示例:
di={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"}
del di["game"]
print(di)#==>{'name': 'kirito', 'age': 16, 'sex': '男'}
di_2={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"}
di_2.pop("game")
print(di_2)#==>{'name': 'kirito', 'age': 16, 'sex': '男'}
di_3={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"}
del di_3
print(di_3)#==>报错了
di_4={"game":"刀剑神域", "name":"kirito", "age":16, "sex":"男"}
print(di_4.clear())#==>None
字典常见操作(熟悉)
dict.get(k[,d]) --> 返回指定键的值,如果值不在字典中,则返回default值。
dict.items() --> 以列表返回可遍历的(键, 值) 元组对
dict.keys() --> 以列表返回字典所有的键
dict.values() --> 以列表返回字典所有的值
问题:
问题一:
lis1 = ["name", "author", "introduce"]
lis2 = ["NORWEGIAN WOOD", "Haruki Murakami", "balalalala…"]
将lis1与lis2以键值对的形式呈现。
回答:
lis1 = ["name", "author", "introduce"]
lis2 = ["NORWEGIAN WOOD", "Haruki Murakami", "balalalala…"]
di=dict(zip(lis1,lis2))
print(di)#==>{'name': 'NORWEGIAN WOOD', 'author': 'Haruki Murakami', 'introduce': 'balalalala…'}
问题二:
Amy_info={'name':'amy','addr':'hunan', 'weight':90}
获取amy_info的key,value。
回答:
Amy_info={'name':'amy','addr':'hunan', 'weight':90}
print(Amy_info.keys())#==>dict_keys(['name', 'addr', 'weight'])
print(Amy_info.values())#==>dict_values(['amy', 'hunan', 90])
问题三:
字节如何转字符串,字符串如何转字节?
回答:
转换 | 方法 |
bytes——>str | bytes.decode() |
str——>bytes | str.encode() |