元组、字典

2019-01-03  本文已影响0人  有趣的恶魔QAQ

一、元组

1.什么是元组(tuple)

python提供的容器型数据类型,是不可变而且有序的(元组就是不可变的列表)

2.元组的字面量和元素

(元素1, 元素2, 元素3...)
其中的元素可以是任何类型的数据,元素的类型可以不一样,且同样的元素可以有多个

a.空的元组

tuple1 = ()
print(tuple1)

b.只有一个元素的元组

tuple2 = (520,)
print(tuple2, type(tuple2))

c.直接用逗号将元素隔开,不加括号,也是一个元组

tuple3 = 'cc', 520, 1314
print(tuple3, type(tuple3))

3.元组获取元素和列表一样

tuple4 = ('cc', 520, 1314, 'forever')

获取单个元素

print(tuple4[0], tuple4[-3])

获取部分元素

print(tuple4[1:3])
print(tuple4[::-1])

补充:特殊的获取方式
1.变量1,变量2... = 元组 -- 用前面的变量依次获取元组元素的值(要求前面变量的个数和元组元素的个数一样)

tuple4 = ('cc', 520, 1314, 'forever')
w, x, y, z = tuple4
print(w, x, y, z)

2.变量1,变量2 = 元组 -- 通过带的变量获取剩余部分的所有元素

(此结构中带*的变量最多只能有一个,不带*的可以有多个,打印带*的变量数据类型为列表)

tuple5 = ('cc', 520, 1314)
name, *num = tuple5
print(name, num)

也可以在其他变量前加*

*name, num = tuple5
print(name, num)

补充:*的用法
1.取元组和列表中的数据
tuple6 = ('cc', 520, 1314)
list1 = ['cc', 520, 1314]
str1 = 'adgdgabc'
print(*tuple6, *list1, *str1)

相关运算(和列表一样)

+ ,*
in , not in
len(),max(),min(),sum(),tuple()
print(tuple(list1))  # 类型转换
5.排序

sorted(序列) -- 对序列中的元素排序,无论是什么序列,排序完成后都是产生一个新的列表
注意: 列表.sort()-- 修改原列表中元素的顺序 ;sorted(列表)-- 将原列表中的元素提出来排序后产生新的列表

join的用法

字符串.join(序列) -- 将序列中的元素取出,用指定的字符串连接在一起,要求序列中的元素必须是字符串

new_str = '1'.join(('cc', 'wo', 'ai', 'ni'))
print(new_str, type(new_str))

list2 = [1314, 10, 520, 25]
another_list = list2.sort()  # None  sort不会产生新的列表
print(list2, another_list)

二、字典

1.什么是字典(dict)

python提供的容器型数据类型,可变且无序
可变 -- 支持元素的增删改
无序 -- 不支持下标操作

2.字面量和元素

用大括号括起来,里面有多个键值对,每个人键值对用逗号隔开,每个键值对就是字典的元素
{key1/value1 , key2/value2 ...}

注意:字典存储数据实际是通过值存储的,key是值对应的标签和获取值的方式

dic1 = {'a': 321, 'a': 520, 1314: 'woaini', (1, 2): [3, 4]}
print(dic1) # 值为{'a': 520, 1314: 'woaini', (1, 2): [3, 4]},体现出键的唯一性,保存后者

dic2 = {[1, 2, 3]: 'xixi'}
print(dic2)  # False  TypeError: unhashable type: 'list',键的不可变性
3.什么时候用字典:多个数据之间互不关联,无共同意义需要区分的就用字典例如:保存一个人的信息

什么时候用列表:存储的多个数据之间意义相同,不需要区分。

dic2 = {'name': '陈儿', 'sex': 'girl', 'age': 18, 'height': 160, 'weight': 95}
print(dic2['age'])

练习,声明变量,保存一个班的学生信息,每个学生需要保存:姓名、电话、年龄

all_students = [
{},
{},
{},
]

字典元素的增删改查

1.查(获取元素对应的值)
dic2 = {'name': '陈儿', 'sex': 'girl', 'age': 18, 'height': 160, 'weight': 95}
print(dic2['age'])
print(dic2.get('height'))
print(dic2.get('yanzhi'))  # 字典中不存在此key,None
print(dic2.get('yanzhi', 100))

遍历字典

1.直接通过for in 遍历字典取到的是key(推荐使用)
dic2 = {'name': '陈儿', 'sex': 'girl', 'age': 18, 'height': 160, 'weight': 95}
for key in dic2:
    print(key, end=':')
    print(dic2[key])
2.遍历字典的value(),获取所有值
for value in dic2.values():
    print(value)
3.遍历字典的items(),直接获取key和value(不建议使用)
for key, value in dic2.items():
    print(key, value)

2.增、改

dic2 = {'name': '陈儿', 'sex': 'girl', 'age': 18, 'height': 160, 'weight': 95}
# 添加颜值评分
dic2['yanzhi'] = 100
print(dic2)
# 修改身高
dic2['height'] = 165
print(dic2)

3.删

dic2 = {'name': '陈儿', 'sex': 'girl', 'age': 18, 'height': 160, 'weight': 95}
del dic2['age']
print(dic2)

dic2.pop('sex')
print(dic2)

4.字典相关操作

dic4 = {'a': 1, 'b': 2, 'c': 3}
print('a' in dic4)
print('c' not in dic4)
1.获取字典中键值对的个数

print(len(dic4))

2.获取字典中key的最大值/最小值

print(max(dic4), min(dic4))

print(dict(((1, 2), ('c', 3), (520, 1314))))

字典转换成列表/元组就是将字典的key提出来组成列表/元组/集合的元素
dic4 = {'a': 1, 'b': 2, 'c': 3}
dic4.clear()
print(dic4)
dic4 = {'a': 1, 'b': 2, 'c': 3}
# 直接赋值,修改其中一个的元素,会影响到另外一个
dic5 = dic4
dic4['b'] = 4
print(dic4)
print(dic5)
通过copy,会产生新的地址,赋值过后修改其中一个的元素,另外一个不受影响
dic6 = {'a': 1, 'b': 2, 'c': 3}
dic7 = dic6.copy()
dic6['b'] = 4
print(dic6)
print(dic7)
dict.fromkeys(序列, 值) -- 以序列中所有元素作为key,指定的值作为value产生一个新的字典
new_dict = dict.fromkeys('abc', 10)
print(new_dict)
dic6 = {'a': 1, 'b': 2, 'c': 3}
print(dic6.keys(), dic6.values(), dic6.items())
dic6 = {'a': 1, 'b': 2, 'c': 3}
dic6.update({'a': 2, 'd': 4})
print(dic6)

三、集合

集合(set)
可变的,无序的;元素是唯一且不可变的

字面量
{元素1, 元素2,元素3...}

set1 = {1, 2, 'abc', 1, 2}
print(set1)  # 自动去重,体现元素的唯一性
空集合的表示方式

set2 = set()

a.查 -- 只能遍历(无法单独的获取单个元素)
b.增
set1 = {1, 2, 'abc'}
set1.add('dd')
print(set1)
set1.update('dd')
print(set1)

c.删

集合.remove(元素) -- 将指定元素删除
set1 = {1, 2, 'abc'}
set1.remove(1)

d.数学集合运算

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
# 求交集
print(set1 & set2)
# 求并集
print(set1 | set2)
# 求差集
print(set1 - set2)
# 求补集
print(set1 ^ set2)
# 求子集
print(set1 > set2)
print(set1 < set2)
上一篇 下一篇

猜你喜欢

热点阅读