Python之数据类型3

Python之数据类型3

1、列表常用方法


"""
列表常用方法
"""
li = [1, 2, 3]
li.append(4)
print(li)

li.append([5, 5])
print(li)  # [1,2,3,[5,5]]  在list最后添加元素

li.extend([5, 5])
print(li)  # [1, 2, 3, 5, 5] 将列表元素直接扩展到li后面

li1 = [1, 2, 3, [3, 3]]
print(li1.count(3))  # 统计某元素出现的次数,返回整数

li2 = [1, 2, 3, 2, 3]
print(li2.index(3))  # 返回元素所在索引位置(小的那个) # 当字符不存在时会报错


li3 = ["happy", "year"]
li3.insert(1, "new")  # index,obj:在index前面插入obj
print(li3)

li4 = [1, 2, 3]
del li4  # 直接把li4给删除了
print(li4)

li4.clear()  # 清空列表
print(li4)

li5 = [1, 2, 3]
print(li5.copy())

li6 = li5
print(li6) # [1, 2, 3]

注意: copy()是浅拷贝,拷贝后的对象与拷贝前的对象数据相等,但是它们的地址不相同。

2、元组的创建


Python之数据类型3
Python之数据类型3
案例

tu = ()
print(type(tu))  # <class 'tuple'>

tu1 = tuple()
print(type(tu1))  # <class 'tuple'>

tu2 = tuple("12345,")  # iterable
print(tu2)

# tu3 = tuple(123,)  # 注意:一定为可迭代对象,所以整数不可作为参数,会报错
# print(tu3)

tu4 = (123,)  # tuple 注意:以(,)这种方式创建,只有一个元素时记得跟上英文状态下逗号,否则会觉得就是普通小括号
print(tu4)

tu5 = (123)  # int
print(type(tu5))

3、元组与列表相同操作


Python之数据类型3
案例

# tu = tuple("12345")
# print(tu[1])    # '2'
#
# print(tu[2:4])  # ("3","4")


# tu1 = (1,2,3,4,5,5,5,4)
# print(tu1.count(5))  # 3
# print(tu1.index(5))  # 4


# tuple类型只有以上两种方法,那如果想实现反转以及排序,如何处理?
# tu2 = (3, 2, 5)
# print(tu2[::-1])
# print(tuple(reversed(tu2)))  # reversed:内置的反转类
# print(list(reversed(tu2)))   # reversed:内置的反转类
#
# print(sorted(tu2))             # 升序,返回list


# tu3 = (1, 2, 3)
# tu4 = (2, 2, 3)
# print(tu3 + tu4)       # 拼接
# print(tu3 * tu4)       # 不能元组与元组相乘
# print(tu3 * 2)           # 扩展

4、元组不可用的操作


Python之数据类型3
Python之数据类型3

案例

# tu = (1, 2, 3)
# tu[1] = 5       # 不可元素的修改
# print(tu)

# tu1 = tu + (4,)   # 只能创建新的元组,而不能修改元组
# print(id(tu))
# print(id(tu1))
# print(tu1)

# tu1 = (1,2,3,["amy",5])  # 可改:不许修改仅在一级元素是元组
# tu1[3][0] = 4
# print(tu1)
#
# tu2 = (1,2,3,("amy",5))  # 不可改
# tu2[3][0] = 4
# print(tu2)


# 元组所消耗的内存比列表要少
# 当你的元素不需要改变的时候 推荐使用元组
# 当你的元素需要改变的时候 推荐使用列表


# list-->tuple
# li = [4, 5, 6]
# print(tuple(li))


# tuple-->list
# tu3 = (1, 2, 3)
# print(list(tu3))


5、字典的创建


Python之数据类型3
Python之数据类型3
Python之数据类型3
案例

# 创建空字典
# dic = {}
# print(dic)
# print(type(dic))   # <class 'dict'>

# 创建字典 元素不限 值可以为任意类型
# cgt_infor = {"addr": "hunan", "age": 18, "hobbit": ["study python", "badminton"]}

# 注意1:键只能是不可变数据类型
# cgt_infor = {["addr"]: "hunan"}   # 报错,因为[]是可变类型
# cgt_infor = {("addr"): "hunan"}     # 可以,因为()是不可变类型

# 注意2:键需要唯一,但是有重复键时,覆盖。
# cgt_infor = {"addr": "hunan", "addr": "深圳", "addr": "北京"}
# print(cgt_infor)


# 创建字典
# dic2 = dict()
# print(dic2)
# print(type(dic2))

# dict(**kwargs) 键值对
dic3 = dict(name="amy", age=18)
print(dic3)

# dict(mapping)  映射 ("name","amy")
dic4 = dict([("name", "amy"), ("age", 18)])
print(dic4)

dic5 = {'name': 'amy', 'age': 18}
print(dic3 == dic4 == dic5)


注意:dict的多种创建方式,它们的值是相等的,但是在内存中的地址不同

6、map与zip拓展


Python之数据类型3
案例:

# 需求 list("1234") --> [1,2,3,4]-->将li中的每个元素转为int类型
# li = list("1234")
# map(func, *iterables)
# print(map(int, li))  # map对象:映射,将li当中的每个元素传到了int()当中,再返回
# print(list(map(int, li)))  # 将map对象转为list呈现


# ipt = input("请输入:")  # 1 3 5 9
# print(list(map(int, ipt.split(" "))))


# 目标:[("name","winter"),("age",18)]
# li_k = ["name", "age"]
# li_v = ["winter", 18]


# print(zip(li_k, li_v))  # zip对象:打包,将可迭代对象里面一一对应的元素打包元组进行返回
# print(dict(list(zip(li_k, li_v))))


# def f_map(key_a, value_b):
#     return (key_a, value_b)
#
#
# print(dict(list(map(f_map, li_k, li_v))))

7、字典的增改查


Python之数据类型3
Python之数据类型3
案例

dic1 = {"name": "amy", "age": 18}
# 查询值
# print(dic1[0])     # 报错,dict它是集合类型,集合类型没有下标说法。
# print(dic1["name"])  # dic[exit_key]
# print(dic1["sex"])   # 注意:当key值不存在时,访问则报错

# 增加值,取出赋值
dic1["gender"] = "female"
# print(dic1)

# 修改值,取出重新赋值
dic1["gender"] = "male"
# print(dic1)

8、字典的删


Python之数据类型3
案例

dic1 = {"name": "amy", "age": 18}

# 删除指定的值
# del dic1["name"]
# print(dic1)

# dic1.pop()   # 报错,dict.pop必须传参数
# print(dic1)

# dic1.pop("age")
# print(dic1)


# 删除整个字典
# del dic1


# 清空字典
# dic1.clear()
# print(dic1)

9、字典的常用方法


Python之数据类型3
案例:

dic1 = {"name": "amy", "age": 18}
# print(dic1.get("name"))
# print(dic1.get("gender"))       # None 直接用方括号通过不存在的键获取值会报错,但是使用get获取返回None


print(dic1.items())               # [('name', 'amy'), ('age', 18)]
# for key, value in dic1.items():
#     print(key, value)


# 获取所有的key
print(dic1.keys())


# 获取所有的value
print(dic1.values())

作业


题1

Python之数据类型3

list1 = ['name', 'author', 'introduce']
list2 = ['NORWEGIAN WOOD', 'Haruki Murakami', 'balala....']
# 方法1
print(dict(zip(list1, list2)))

# 方法2
def combine(key, value):
    return (key, value)
print(dict(map(combine, list1, list2)))

# 方法3
obj = {}
for i in range(0, 3):
    obj[list1[i]] = list2[i]
print(obj)

打印结果都是:{‘name’: ‘NORWEGIAN WOOD’, ‘author’: ‘Haruki Murakami’, ‘introduce’: ‘balala…’}


题2

Python之数据类型3

amy_info = {'name': 'amy', 'addr': 'hunan', 'weight': 90}
# 获取所有的key
print(amy_info.keys())

# 获取所有的value
print(amy_info.values())

# 获取映射关系
print(amy_info.items())

题3

Python之数据类型3

# 字节转字符串的方法:decode(),也叫解码过程
by = b'hello'
print(by) # b'hello'
print(by.decode()) # hello
# 字符串转字节的方法:encode(),也加加密过程
str1 = 'world'
print(str1.encode()) # b'world'

注意:字节的另外一种创建方法=》print(bytes(‘hello world’,encoding=‘utf8’)) # b’hello world’


Python之数据类型3
Python之数据类型3

上一篇:数学04--丑数


下一篇:LeetCode 290[Python]. 单词规律 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。