
一木.溪桥 在Logic Education跟Amy学Python
12期:Python基础课
一木.溪桥学Python-06:元组tuple、字典dict
日期:2020年12月25日
学习目标:
- 元组tuple
- 字典dict
学习内容:
元组tuple
tuple介绍
元组也是 序列结构,但是是一种 不可变序列,你可以简单的理解为内容不可变的
列表。除了在内部元素不可修改的区别外,元组和列表的用法差不多。
tuple创建
1.创建一个元组,只要把 逗号 分隔的 不同的数据元素 使用 小括号 括起来即可。
tu = (1,2,3,4)
print(type(tu))
print(tu)
- run:
<class ‘tuple’>
(1, 2, 3, 4)
2.通过 tuple() 来进行创建元组
tu = tuple("1234",)
print(type(tu))
print(tu)
-
run:
<class ‘tuple’>
(‘1’, ‘2’, ‘3’, ‘4’) -
tips
- 参数为可迭代对象,整数123不能作为参数,会报错。
2.tuple只有一个元素时,后面加“,”
tuple操作
- 使用方括号加下标访问元素
tu = tuple("hello!",)
print(tu[1]) # e
- 切片(形成新元组对象)
tu = tuple("hello!",)
print(tu[::-1]) # ('!', 'o', 'l', 'l', 'e', 'h')
- tuple.count() / tuple.index()
tu = tuple("hello!",)
print(tu.count("l")) # 2
print(tu.index("e")) # 1
- python内置函数:reversed() 反转, sorted()排序
reversed() 反转
tu = tuple("hello!",)
print(list(reversed(tu))) # ['!', 'o', 'l', 'l', 'e', 'h']
sorted()排序:升序
tu = tuple("147258369",)
print(list(sorted(tu))) # ['1', '2', '3', '4', '5', '6', '7', '8', '9']
sorted()排序:降序
tu = tuple("147258369",)
print(list(sorted(tu, reverse=True))) # ['9', '8', '7', '6', '5', '4', '3', '2', '1']
- 加法
tu1 = tuple("123",)
tu2 = tuple("345",)
print(tu1 + tu2) # ('1', '2', '3', '3', '4', '5')
- 乘法
tu2 = tuple("345",)
print(3 * tu2) # ('3', '4', '5', '3', '4', '5', '3', '4', '5')
不允许的操作
- 不允许 修改 、新增 元素。(一级)
- 不允许 删除 某个元素(但可以删除整个元组)
- 实际上,元组没有任何会对内部元素发生 修改 动作的方法。例如,元组没有
remove , append , pop 等方法
tuple、list转换
tu = tuple("123",)
print(list(tu)) # ['1', '2', '3']
li = ['1', '2', '3']
print(tuple(li)) # ('1', '2', '3')
字典dict
dict介绍
字典介绍 ( 掌握 )
Python 的字典数据类型是基于 hash 散列算法实现的,采用 键值对 (key:value) 的形
式,根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。它是一种 可变
对象 ,所以支持修改、插入、删除等操作。
dict创建
- 格式1:{ key1 : value1, key2 : value2}
- tips:
- Python3.6 开始,字典对象会保持键值插入时的顺序,并且其包含的 元
素个数不限,值的类型 也可以是其它任何数据类型。 - 字典的 key 必须是 不可变的对象,例如整数、字符串、bytes 和元组,但使
用最多的还是字符串。 列表、字典、集合等就不可以作为 key。同时,同一
个字典内的 key 必须是唯一 的,但值则不必。
dic = {"name": "DXD", "age": 20}
print(type(dic)) # <class 'dict'>
print(dic) # {'name': 'DXD', 'age': 20}
- 格式2:dict() 键值对
dic = dict(name="DXD", age=20)
print(dic) # {'name': 'DXD', 'age': 20}
- 格式3:映射
dic = dict([("name", "DXD"), ("age", 20)])
print(dic) # {'name': 'DXD', 'age': 20}
字典创建拓展
- map(func, *iterables):
将 iterables 里面的元素逐个传到 func 里面做处理
li = list("12345")
print(list(map(int,li))) # [1, 2, 3, 4, 5]
print(li) # ['1', '2', '3', '4', '5']
- zip(iter1 [,iter2 […]]):
将iter1 iter2 中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
zip() --> dict
li1 = list("12345")
li2 = list("abcde")
print(dict(zip(li1,li2))) # {'1': 'a', '2': 'b', '3': 'c', '4': 'd', '5': 'e'}
zip() --> list
li1 = list("12345")
li2 = list("abcde")
print(list(zip(li1,li2))) # [('1', 'a'), ('2', 'b'), ('3', 'c'), ('4', 'd'), ('5', 'e')]
dict访问
访问字典 ( 掌握 )
字典是 集合类型,不是序列类型,因此 没有索引下标 的概念,更 没有切片 的
说法。但是,与 list 类似,字典采用把 相应的键 放入 方括号 内获取 对应值 的
方式取值。
如:dic[exit_key]
思考:当 key 值不存在时,程序会怎么样呢?–> 报错
dict的增加与修改 ( 掌握 )
- 增加 就是往字典 插入新的键值对
- 修改 就是给 原有的键赋予新的值。由于一个 key 只能对应一个值,所以,多次对一个 key 赋值,后面- 的值会把前面的值 覆盖 掉。
dict删除 ( 掌握 )
- 删除字典元素:del dic[exit_key] 或 dic.pop(exit_key)
- 删除整个字典:del dic
- 清空整个字典:dic.clear()
dic = dict(name="DXD", age=20)
print(dic.clear()) # None
dict常见操作 ( 熟悉 )
- D.get(k[,d]) --> 返回指定键的值,如果值不在字典中,则返回 default 值
- D.items() --> 以列表返回可遍历的 ( 键 , 值 ) 元组对
- D.keys() --> 以列表返回字典所有的键
- D.values() --> 以列表返回字典所有的值
dic = dict(name="DXD", age=20)
print(dic) # {'name': 'DXD', 'age': 20}
print(dic.get('name')) # DXD
print(dic.items()) # dict_items([('name', 'DXD'), ('age', 20)])
print(dic.keys()) # dict_keys(['name', 'age'])
print(dic.values()) # dict_values(['DXD', 20])
作业:
作业答案:
题1:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/27 21:17
# @Author : 一木.溪桥
# @File : 作业.py
# @Software: PyCharm
lis1 = ["name", "author", "introduce"]
lis2 = ["NORWEGIAN WOOD", "Haruki Murakami", "balalalalal..."]
print(dict(list(zip(lis1,lis2))))
- run:
{‘name’: ‘NORWEGIAN WOOD’, ‘author’: ‘Haruki Murakami’, ‘introduce’: ‘balalalalal…’}
题2:
Amy_info = {'name': 'amy', 'addr': 'hunan', 'weight': 90}
print(Amy_info.keys())
print(Amy_info.values())
- run:
dict_keys([‘name’, ‘addr’, ‘weight’])
dict_values([‘amy’, ‘hunan’, 90])
题4:
bytes 转 str
bt = bytes("hello Amy!", encoding="utf")
s = bt.decode()
print(type(s))
print(s)
- run:
<class ‘str’>
hello Amy!
str 转 bytes
s = "hello Amy!"
bt = s.encode()
print(type(bt))
print(bt)
- run:
<class ‘bytes’>
b’hello Amy!’