总结 - 容器类型

2018-11-13  本文已影响0人  憧憬001

一、列表补充

1.给变量赋值的时候,如果数据的类型是数字或者字符串,不会直接开辟空间存数据,
而是现在数字字符串对应的缓存区里面去查看是否已经存储过对应的数据。如果已经存了,
直接将之前的数据对应的地址赋给变量。如果没有存储才会开辟空间存储数据。
其他类型的数据,都是直接开辟空间存储数据。然后再把地址返回
2.容器类型中的元素,在容器中不是直接存的值,而是元素值对应的地址

二、列表相关方法

list1 = [1, 2, 3]
list2 = list1
list2.append(66)
print(list1)

list3 = list1[:]
list3.append(100)
print(list3)
>>>>
[1, 2, 3, 66]
[1, 2, 3, 66, 100]
nums = [1, 23, 45, 56, 5, 45]
print(nums.count(45))
>>>>
2
numbers = [100, 34, 90, 89, 100, 7, 100, 18, 'abc', 'hello']
numbers.extend(['abc', 'hello'])
print(numbers)
numbers.extend('world')
print(numbers)
numbers.extend(range(11, 15))
print(numbers)
>>>>
[100, 34, 90, 89, 100, 7, 100, 18, 'abc', 'hello']
[100, 34, 90, 89, 100, 7, 100, 18, 'abc', 'hello', 'w', 'o', 'r', 'l', 'd']
[100, 34, 90, 89, 100, 7, 100, 18, 'abc', 'hello', 'w', 'o', 'r', 'l', 'd', 11, 12, 13, 14]
numbers = [3, 1, 2, 3, 4, 5, 3]
print(numbers.index(3))
>>>>
0
nums = [1, 5, 45, 8, 2, 9, 2, 59]
nums.reverse()
print(nums)
nums.sort()
print(nums)
nums.sort(reverse=True)
print(nums)
>>>>
[59, 2, 9, 2, 8, 45, 5, 1]
[1, 2, 2, 5, 8, 9, 45, 59]
names = ['路飞', '娜美', '山治', '罗宾', '弗兰克', '乔巴', '佐罗']
names.clear()
print(names)
>>>>
[]
list1 = [1, 2, 3]
list2 = list1.copy()
print(list2)
print(list1 is list2)
>>>>
[1, 2, 3]
False

什么时候使用字典:
如果一个容器里面储存的数据是不同意义的数据(数据之间需要区分)就使用字典

三、浅拷贝和深拷贝

import copy

numbers1 = [1, 2, 3]
numbers2 = [10, 20, 30]
list1 = [numbers1, numbers2]
list2 = list1.copy()  # 浅拷贝
print("1.浅拷贝")
print("修改前list1:", list1)
print("修改前list2:", list2)
print("对list1进行修改")
list1.append(66)
list1[0].append(666)
print("修改后list1:", list1)
print("修改后list2:", list2)


numbers1 = [1, 2, 3]
numbers2 = [10, 20, 30]
list1 = [numbers1, numbers2]
list2 = copy.deepcopy(list1)  # 浅拷贝
print("2.深拷贝拷贝")
print("修改前list1:", list1)
print("修改前list2:", list2)
print("对list1进行修改")
list1.append(66)
list1[0].append(666)
print("修改后list1:", list1)
print("修改后list2:", list2)
>>>>
1.浅拷贝
修改前list1: [[1, 2, 3], [10, 20, 30]]
修改前list2: [[1, 2, 3], [10, 20, 30]]
对list1进行修改
修改后list1: [[1, 2, 3, 666], [10, 20, 30], 66]
修改后list2: [[1, 2, 3, 666], [10, 20, 30]]
2.深拷贝拷贝
修改前list1: [[1, 2, 3], [10, 20, 30]]
修改前list2: [[1, 2, 3], [10, 20, 30]]
对list1进行修改
修改后list1: [[1, 2, 3, 666], [10, 20, 30], 66]
修改后list2: [[1, 2, 3], [10, 20, 30]]

四、元组

tuple1 = (1, True, "abc", [1, 2])
print(tuple1)

tuple2 = (10)
tuple3 = (10,)
print(type(tuple2), type(tuple3))

tuple4 = 1, 2, "abc"
print(type(tuple4))
>>>>
(1, True, 'abc', [1, 2])
<class 'int'> <class 'tuple'>
<class 'tuple'>

五、字典

student = {'name': '小明', 'age': 28, 'tel': '1627399992', 'score': 30, '学号':'1982001'}
print(student)
print(student['name'])
>>>>
{'name': '小明', 'age': 28, 'tel': '1627399992', 'score': 30, '学号': '1982001'}
小明

六、字典的增删改查

1.查(获取字典的值)
zhangsan = {"name": "张三", "age": 89, "gender": "男", "hobby": "play"}
print(zhangsan["name"])

print(zhangsan.get("age"))
print(zhangsan.get("hobby"))
print(zhangsan.get("hahahhahhaha"))

# 直接遍历字典拿到的是字典中所有的key值
for key in zhangsan:
    print(key)

for key, value in zhangsan.items():
    print(key, value)
>>>>
张三
89
play
None
name
age
gender
hobby
name 张三
age 89
gender 男
hobby play
2.增(添加键值对)
dict3 = {'a': 1, 'b': 2, "c": 3}
dict3.update({'a': 10, 'b': 20})
print(dict3)
>>>>
{'a': 1, 'b': 2}
3.改(修改key对应的值)
dict1 = {'a': 10, 'b': 20}
dict1['a'] = 100
print(dict1)
>>>>
{'a': 100, 'b': 20}
4.删(删除键值对)
# a
person = {'name': '张三', 'age': 30, 'sex': '男'}
del person['sex']
print(person)
# b
person = {'name': '张三', 'age': 30, 'sex': '男'}
age = person.pop('age')
print(person, age)

person = {'name': '张三', 'age': 30, 'sex': '男'}
# 删除最后一个键值对(取出最后一个键值对, 以元祖的形式返回) - 无意义
value = person.popitem()
print(person, value)
>>>>
{'name': '张三', 'age': 30}
{'name': '张三', 'sex': '男'} 30
{'name': '张三', 'age': 30} ('sex', '男'

七、字典相关运算和方法

dict.fromkeys(序列, 值) - 以序列中的元素作为key,值作为所有key对应的默认值,创建一个字典
"""
dict3 = dict.fromkeys('xyzp', 100)
print(dict3)   
dict3 = dict.fromkeys(['name', 'age', 'height'], 100)
print(dict3)    
>>>>
{'x': 100, 'y': 100, 'z': 100, 'p': 100}
{'name': 100, 'age': 100, 'height': 100}

字典.keys() - 获取字典所有的key(返回一个序列,序列中所有的元素就是字典的key)
字典.values() - 获取字典所有的值(返回一个序列,序列中所有的元素就是字典的值)
字典.items() - 获取字典所有的键值对(返回一个序列,序列中的元素是元组,元组元素有两个分别是key和值)

dict1 = {"x": 89, "y": 45, "z": 56}
keys = dict1.keys()
print(keys, type(keys))
values = dict1.values()
print(values, type(values))
print(list(values))
items = dict1.items()
print(items, type(items))
print(list(items), dict(items))
>>>>
dict_keys(['x', 'y', 'z']) <class 'dict_keys'>
dict_values([89, 45, 56]) <class 'dict_values'>
[89, 45, 56]
dict_items([('x', 89), ('y', 45), ('z', 56)]) <class 'dict_items'>
[('x', 89), ('y', 45), ('z', 56)] {'x': 89, 'y': 45, 'z': 56}

八、集合

1.集合(set)
set1 = {1, 2, 1, "sdj", "手机打开"}
print(set1)  # 会自动去重

set2 = {}   # 表示一个空字典
print(type(set2))
set3 = set()   # 创建一个空集合
print(type(set3))
>>>>
{1, 2, 'sdj', '手机打开'}
<class 'dict'>
<class 'set'>
2.集合的增删改查
3.数学集合运算

python中的集合支持数学相关的集合运算

set1 = {1, 2, 3, 4}
set2 = {2, 4, 5, 6, 9}
print(set1 | set2)

print(set1 & set2)

print(set1 - set2)

print(set1 ^ set2)
>>>>
{1, 2, 3, 4, 5, 6, 9}
{2, 4}
{1, 3}
{1, 3, 5, 6, 9}
上一篇 下一篇

猜你喜欢

热点阅读