Python基础-列表,元组,字典,集合

Last updated on October 6, 2024 pm

Python基础知识学习-1

教程来自:https://python.iswbm.com/ Python中文指南, 更详细的示例

列表list

list() 创建空表格或[ ] 方括号创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
创建列表有两种方法

第一种方法:先创建空列表实例,再往实例中添加元素

>>> phones = list() # 实例化
>>> phones.append("Apple") # append添加元素
>>> phones.append("Huawei") # 添加元素
>>> phones.append("Xiaomi") # 添加元素
>>> phones
['Apple', 'Huawei', 'Xiaomi']

第二种方法:直接定义列表,并填充元素。推荐第二种
>>> phones = ["Apple", "Huawei", "Xiaomi"]
>>> phones
['Apple', 'Huawei', 'Xiaomi']

元组tuple

与列表不同,元组是不可变的,或者说元组中的元素值是不可改(增删)的,但是可以对整个元组进行操作: https://www.runoob.com/python/python-tuples.html

使用tuple() 或() 圆括号创建

当你创建只包含一个元素的元组时,要在第一个元素后面加一个逗号

1
2
3
>>> ctuple = (1,)
>>> type(ctuple) #R语言中是class()
<class 'tuple'>

但是可以通过 +、* 添加元素,这里理解为重新定义了新的tuple

1
2
3
4
5
6
7
8
a=(1,2,3)
a+=(4,5,6)
print(a)
# 输出 (1,2,3,4,5,6)

b=a*3
print(b)
# 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)

字典dict

字典(英文名 dict),它是由一系列的键值(key-value)对组合而成的数据结构。字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key: value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 。

字典中的每个键都与一个值相关联,其中

  1. 键,必须是可 hash 的值,如字符串,数值等
  2. 值,则可以是任意对象

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

第一种方法 :先使用dict()创建空字典实例,再往实例中添加元素

1
2
3
>>> profile = dict(name="王炳明", age=27, 众号="ython编程时光")
>>> profile
{'name': '王炳明', 'age': 27, '众号': 'ython编程时光'}

第二种方法 :直接使用 {}定义字典,并填充元素。

1
2
3
>>> profile = {"name": "王炳明", "age": 27, "公众号": "Python编程时光"}
>>> profile
{'name': '王炳明', 'age': 27, '公众号': 'Python编程时光'}

第三种方法 :使用 dict()构造函数可以直接从键值对序列里创建字典。

1
2
3
>>> info = [('name', '王炳明 '), ('age', 27), ('公众号', 'Python编程时光')]
>>> dict(info)
{'name': '王炳明 ', 'age': 27, '公众号': 'Python编程时光'}

第四种方法:使用字典推导式。

1
2
3
>>> adict = {x: x**2 for x in (2, 4, 6)}
>>> adict
{2: 4, 4: 16, 6: 36}

重要方法

判断Key 是否存在

使用in 和 not in 来判断

1
2
3
4
5
6
>>> profile = {"name": "王炳明", "age": 27, "公众号": "Python编程时光"}
>>> "name" in profile
True
>>>
>>> "gender" in profile
False

设置默认值

要给某个 key 设置默认值,最简单的方法

1
2
3
4
profile = {"name": "王炳明", "age": 27, "公众号": "Python编程时光"}

if "gender" not in profile:
profile["gender"] = "male"

更简单的办法 .setdefault()

1
2
profile = {"name": "王炳明", "age": 27, "公众号": "Python编程时光"}
profile.setdefault("gender", "male")

集合set

集合(英文名 set),它是一个无序的不重复元素序列。

第一种方法:使用 花括号 {} 直接创建,创建的时候,{} 可以包含有重要的元素,但是创建完后,集合会去重,只留第一个。

1
2
3
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])

第二种方法:使用set() 方法进行创建,当set() 函数不接任何参数时,创建的是空集合,如果不创建空集合,可以传入一个列表。

1
2
3
4
5
6
7
>>> bset = set()  # 空集合
>>> bset
set([])
>>>
>>> cset = set(["Apple", "Huawei", "Xiaomi"])
>>> cset
set(['Huawei', 'Apple', 'Xiaomi'])

增删查改

增加元素

使用 update 函数,来往集合中添加元素。update 函数后可接集合,列表,元组,字典等。

这是接集合的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>>> aset = set()
>>> aset
set([])
>>>
>>> # 接集合
>>> aset.update({"Apple"})
>>> aset
set(['Apple'])
>>>
>>> # 接列表
>>> aset.update(["Huawei"])
>>> aset
set(['Huawei', 'Apple'])
>>>
>>> # 接元组
>>> aset.update(("Xiaomi",))
>>> aset
set(['Huawei', 'Apple', 'Xiaomi'])
>>>
>>> # 接字典
>>> aset.update({"VIVO": "xxxx"})
>>> aset
set(['Huawei', 'Apple', 'VIVO', 'Xiaomi'])

删除元素

使用remove 函数可以删除集合中的元素

1
2
3
4
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("Xiaomi")
>>> aset
set(['Huawei', 'Apple'])

使用remove函数,如果对应的元素不存在,是会报错的。

1
2
3
4
5
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("VIVO")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'VIVO'

对于这种情况,你可以使用 discard函数,存在元素则移除,不存在也不会报错。

1
2
3
4
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.discard("VIVO")
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])

修改元素

文章开头处,已经说明了集合是无序的,因此集合是 没有索引的。

既然没有索引,修改也无从谈起。

记住:集合只有添加元素、删除元素。

查询元素

同上,没有顺序,也就没有索引,查询也无从谈起。

但是可以查看集合的长度 len()

1
2
3
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> len(aset)
3

集合运算

合并:union ,合并 时会去掉重复的部分

交集:intersection 函数

如果计算两个集合中不重复的元素集合,可以使用 symmetric_difference 函数

集合判断

判断是否有某元素 in

R语言是 %in%

1
2
3
>>> aset = {"Apple", "Huawei"}
>>> "Apple" in aset
True

判断两集合是否有相同元素 .isdisjoint

如果两集合有相同元素,则返回 False,如果没有相同元素,则返回 True

1
2
3
4
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.isdisjoint(bset)
False

判断是否是子集 .issubset

1
2
3
4
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Huawei"}
>>> bset.issubset(aset)
True

Python基础-列表,元组,字典,集合
http://example.com/2024/10/06/Python基础-列表,元组,字典,集合/
Posted on
October 6, 2024
Licensed under