Python基础(六):组合数据类型II
Python中的可变对象与不可变对象
在 python 中,字符串,元组和数字类型是不可更改的对象,而列表、字典等则是可以修改的对象。
字符串
举例
string = "abcd" print(string) string[2] = "f"
输出结果
abcd --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_17616\1561895390.py in <cell line: 3>() 1 string = "abcd" 2 print(string) ----> 3 string[2] = "f" TypeError: 'str' object does not support item assignment
元组
举例
tup1 = 1, 2, "a", "python" print(tup1) tup1[2] = "hello"
输出结果
(1, 2, 'a', 'python') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_17616\737283433.py in <cell line: 3>() 1 tup1 = 1, 2, "a", "python" 2 print(tup1) ----> 3 tup1[2] = "hello" TypeError: 'tuple' object does not support item assignment
几种组合数据类型的操作
一、集合操作
# 创建集合
thisset = set(("Google", "Runoob", "Taobao"))
# 添加元素
thisset.update([10, 2], {3, 4}, (5, 6))
thisset.add("python") # set.add() takes exactly one argument
thisset
{10, 2, 3, 4, 5, 6, 'Google', 'Runoob', 'Taobao', 'python'}
# 删除元素
thisset.remove("Taobao") # 不存在会发生错误
thisset.discard("Facebook") # 不存在不会发生错误
print(thisset)
thisset.pop()
{2, 3, 4, 5, 6, 10, 'Google', 'python', 'Runoob'}
2
# 判断元素是否在集合中
print("python" in thisset)
True
# 拷贝集合
thisset.copy()
{10, 3, 4, 5, 6, 'Google', 'Runoob', 'python'}
# 清空集合
thisset.clear()
thisset
set()
ls = [1,1,1,1,2,3,3]
s = set(ls)
s
{1, 2, 3}
二、元组操作
tup = 1, 3, "a", (4, "world", 10) # 可以不加括号
print(tup)
tup[3][1] # 下标访问
print(tup.count(3))
print(tup.index((4, "world", 10)))
(1, 3, 'a', (4, 'world', 10))
1
3
三、列表操作
list1 = ['Google', 'Runoob', 1997, 2000]
# 更新列表
list1[1] = "Taobao" # 替换
list1.append(2022) # 追加
list1.insert(0, "start") # 指定位置插入
list1
['start', 'Google', 'Taobao', 1997, 2000, 2022]
# 删除元素
del list1[3]
list1.remove(2000) # 删除第一个匹配值
list1.pop(1) # 指定下标删除
list1
['start', 'Taobao', 2022]
# 反转列表
list1.reverse()
# 拷贝
list2 = list1.copy()
list2
[2022, 'Taobao', 'start']
# 排序
list3 = [["a", 3], ["hel", 5], ["back", 1], ["white", 11]]
list3.sort(key=lambda x: x[1], reverse=True)
list3
[['white', 11], ['hel', 5], ['a', 3], ['back', 1]]
List sort() 方法
sort()
函数用于对原列表进行排序,list.sort( key=None, reverse=False)
key
—— 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse
—— 排序规则,reverse = True 降序, reverse = False 升序(默认)。- 可以根据元素的固有属性进行排序,如:第N个元素。借助 lambda表达式:
list.sort(key=lambda ele:ele[1]) # 根据第2个元素排序
四、字典操作
# 创建字典
d = {"name": "luminous", "age": 22, "site": "xi'an", "height": 170}
# 访问键值
Name = d["name"]
Age = d.get("age", 0)
print("Name:{} , Age:{}".format(Name, Age))
d["site"] = "lanzhou" # 修改键值
d["other"] = 111 # 添加键值对
d
Name:luminous , Age:22
{'name': 'luminous', 'age': 22, 'site': 'lanzhou', 'height': 170, 'other': 111}
# 删除键值对
del d["height"]
print(d.pop("other", 100)) # 删除键值对,返回删除的值,若键不存在,返回默认值100
print(d)
d.popitem() # 删除最后一对键值(python3.9)
111
{'name': 'luminous', 'age': 22, 'site': 'lanzhou'}
('site', 'lanzhou')
# 返回视图对象
keys = d.keys()
values = d.values()
items = d.items()
print(items)
print("keys : {}\nvalues : {}".format(list(keys),
list(values))) # 使用list()转换为列表
print(list(items)) # 使用list()转换为列表
dict_items([('name', 'luminous'), ('age', 22)])
keys : ['name', 'age']
values : ['luminous', 22]
[('name', 'luminous'), ('age', 22)]
# 视图对象是动态的,删除字典的 key,视图对象转为列表后也跟着变化
del d["name"]
print(list(items)) # 使用list()转换为列表
[('age', 22)]
d.clear() # 清空字典
d
{}
# 注意:若将字典直接转换为列表,结果如下:
d = {"name": "luminous", "age": 22, "site": "xi'an", "height": 170}
print(list(d))
['name', 'age', 'site', 'height']
字典 items() 方法 以列表返回视图对象,是一个可遍历的 key/value 对。
dict.keys()
、dict.values()
和dict.items()
返回的都是视图对象( view objects),提供了字典实体的动态视图,意味着字典改变,视图也会跟着变化。视图对象不是列表,不支持索引,可以使用
list()
来转换为列表。字典的视图对象都是只读的,不能对视图对象进行任何的修改。
Python基础(六):组合数据类型II
https://luminous-ee.github.io/2023/01/26/Python基础(六):组合数据类型II/