8.3元组

  • 元组与列表比较相似,不同的是列表是可变的,元组是不可变的序列
  • 元组定义

tup1 = ()  # 这样就定义了一个空元组
tup2 = tuple()
print(type(tup2))  # <class 'tuple'>
tup = (1, 2, 3, 4, 5, 6, 6, 6)

# t = 1, 2, 3, 4, 5, 6, 7, 8  # 这样也可以定义一个元组,不推荐这样定义,不直观
# print(type(t))

print(tup[0])

# tup[0] = 3
# print(tup)  #  does not support item assignment
print(tup.count(6))  # 统计元组某元素的个数
print(tup.index(6))  # 5 查找某元素,找到会返回索引,没找到会报错

# 列表转元组

list1 = [1, 2, 3, 4, 5]

tup2 = tuple(list1)
print(type(tup2))  # <class 'tuple'>
print(tup2)  # (1, 2, 3, 4, 5)

# 元组转列表
list2 = list(tup2)
print(type(list2))  # <class 'list'>
print(list2)  # [1, 2, 3, 4, 5]

# 元组切片

print(tup2[0:3])

# 元组遍历
for item in tup2:
    print(item)

print("=" * 30)
# 小技巧
# 快速创建,全部元素都一样的元组

tup3 = (0,) * 10
print(tup3)

# 元组虽然不可以改变其元素但是可以通过拼接来创建新的元组,以达到增加元素的目的

print(tup)

print(id(tup))
tup = tup + (0,)
print(tup)  # 注意这里并不是改变原来的元组,而是创建一个新的元组
print(id(tup))

# 删除元组
del tup

8.4集合

  • 集合(set)是一个无序的不重复元素序列。

  • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    创建格式:


parame = {value01,value02,...}
# 或者
set(value)
  • 集合的方法
A = {1, 3, 6, 4, 8, 9}

# 往集合里添加元素
A.add("hello")
print("增加后", A)

# 删除集合里的某个元素
A.remove(1)
print("删除后", A)

# 清空
# set1.clear()
# 复制集合
# newSet = set1.copy()


# 通过集合拼接取,不生成新集合 =>并集  生成新集合 union()
B = {10, "a", "b"}
A.update(B)  # A + B
print("并集", A)

# =>差集  C = A - B
C = A.difference(B)
print("差集", C)

# =>交集
D = A.intersection(C)
print("交集", D)

# 移除集合中的元素,该元素在指定的集合也存在。
A.difference_update(C)
print("移除交集", A)

# 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
print(A.isdisjoint(C))

#  判断指定集合是否为该方法参数集合的子集。
print(A.issubset(B))

# symmetric_difference()   返回两个集合中不重复的元素集合。
# symmetric_difference_update()    
# 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
  • 并集,交集,差集图解

python序列——元组、集合、字典(爬虫必修字典生成式)_并集

  • 集合最常见的用法是用来去除重复的元素
  • 例子:
list1 = [9, 9, 5, 1, 2, 2, 2, 2, 2, 6, 1, 2, 1, 2, 1]
print(list1)
list1 = list(set(list1))
print(list1)

8.5字典(重点)

  • 字典是另一种可变容器模型,且可存储任意类型对象。

  • 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号(**{})**中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }
  • Python字典包含了以下内置方法:

    序号 函数及描述
    1 radiansdict.clear() 删除字典内所有元素
    2 radiansdict.copy() 返回一个字典的浅复制
    3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    4 radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
    5 key in dict 如果键在字典dict里返回true,否则返回false
    6 radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
    7 radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
    8 radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
    10 radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
    11 pop(key,default) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    12 popitem() 随机返回并删除字典中的最后一对键和值。
# 定义一个字典
countries = {"cn": "中国", "uk": "英国", "usa": "美国", "jp": "日本", "rus": "俄罗斯"}

print(countries.get("cn"))  # 中国  读取
print(countries["cn"])  # 中国  读取

countries.update({"rome": "罗马"})  # 新增或修改
print(countries)

countries["germany"] = "德国"  # 新增或修改
print(countries)

t = countries.fromkeys((0, 1), "default")  # 创建一个新集合
print(t)  # {0: 'default', 1: 'default'}

print("=" * 40)
print(countries.keys())  # 创建一个迭代器,其元素为集合的键
for item in countries.keys():
    print(item)  # 迭代取出元素

print("=" * 40)
print(countries.values())  # 创建一个迭代器,其元素为集合的值
for item in countries.values():
    print(item)  # 迭代取出元素

print("=" * 40)
print(countries.items())
for item in countries.items():
    print(item)  # 结构是一个元组

print("=" * 40)
del countries["jp"]  # 删除键值对
print(countries)
  • 小技巧
# 通过迭代器  列表里边套一个元组 生成字典

dict1 = dict([(1, 2), (2, 1)])
print(dict1)

# 字典生成式,url 分解时案例:
# q=%E4%BF%84%E7%BD%97%E6%96%AF%E7%BC%A9%E5%86%99&qs=n&form=QBRE&sp=-1&pq=%E4%BF%84%E7%BD%97%E6%96%AFsuoxie&sc=1-9&sk=&cvid=423E6B01861546F4A581F87F6A923484
url = "q=%E4%BF%84%E7%BD%97%E6%96%AF%E7%BC%A9%E5%86%99&qs=n&form=QBRE&sp=-1&pq=%E4%BF%84%E7%BD%97%E6%96%AFsuoxie&sc=1-9&sk=&cvid=423E6B01861546F4A581F87F6A923484"

parameters = {item.split("=")[0]: item.split("=")[1] for item in (items for items in url.split("&"))}
print(parameters)