Python07 列表、元组、字典、集合

上一篇我们已经认识和了解了列表的基本操作,今天做一下简单补充说明,同时进一步对元组、字典、集合这几个容器类型进行学习。

一.列表的几点补充

 1.列表的值[a, b, c],类型是对象

2.对象类型: 列表、字典、集合、元素、通过类创建的对象

3.变量在存储对象数据的时候,存的对象保存在内存中的地址。如果用存对象的变量给另外一个变量赋值,赋的是地址

注意:如果变量里存的对象,要注意赋值的时候,如果不想要两个变量互相影响,就不要直接赋值而是拷贝对象产生新的对象然后赋值 list.copy( )

【例】

list1 = [1, 2, 3, 4]
list2 = list1[:]
list3 = list1.copy()
list3[1] = 100
list2[0] = 10
print(list3)
print(list2)
print(list1)

输出:

[1, 100, 3, 4]
[10, 2, 3, 4]
[1, 2, 3, 4]

二、元组

1.概念:

元祖(tuple)就是不可变的列表,列表中除了增加、修改和删除相关的操作,其他都适用于元祖

2.什么时候用元组? 

就是存到容器中的数据不能被修改的时候使用,例如:星期几对应的值

3.声明一个元组

tuple1 = (1, 2, 3, 4, 'aa', True)    
print(tuple1)

输出:(1, 2, 3, 4, 'aa', True)

扫描二维码关注公众号,回复: 2013776 查看本文章

注意小括号和列表的中括号区分

4.查

print(tuple1[0])      注意此时里面的元素位置用中括号[]代表
print(tuple1[-1])

print(tuple1[:3])
输出:

1

True

(1, 2, 3)

注意取元素和取坐标的区别!!!

for item in tuple1:
    print(item)

for index in range(len(tuple1)):
    print(tuple1[index])
两种方式都分别会依次打印出元组中元素

5. + , *运算

print((1, 2, 3) + ('a', 'b', 'c'))
print((1, 'a') * 3)

输出:

(1, 2, 3, 'a', 'b', 'c')

(1, 'a', 1, 'a', 1, 'a')

6.in ,和not in操作

a = 10
print(a in (10, 2, 9, 9))
print(a not in (10, 2, 9, 9))
输出:

True

False

【练习】要求:输入1-7的数字,对应输入是星期几。例如:输入1,就输出"星期一"。输入7就输出'星期日'

weeks = ('星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日')
while True:
    input_value = int(input('请输入1~7:'))
    print(weeks[input_value-1])

这里注意

(1)类型的转换Int不要忘记,input函数的使用要正确

(2)坐标从0开始,所以最后面要-1

(3)input_value是个变量,我只是为了见名知意,这个换成x是等价

weeks = ('星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日')
while True:
    x = int(input('请输入1~7:'))
    print(weeks[x-1])

三、字典

1.基本概念

(1)字典是一个容器类的数据类型,以键值对(key:value)的形式来存储数据

(2)键值对:键:值的形式存在。

  键:理论上只能是不可变的数据类型的数据,实际开发中一般用字符串作为key        值:可以是任何类型的数据; 

(3)字典是可变的(说明可以增、删、改、查),但是是无序的(不能使用下标来访问元素)

2.定义/声明一个字典(dict)

dict1 = {'name': '小明', 'age': 18}
dict2 = {'score': 100, 10: 'aaa', (1, 3):[10, 23]}
print(dict2)

注意:

小明需要加引号;键值对的键是字符串所以也需要引号

可变的数据不能作为字典的key

dict3 = {[10, 12]: 'abc'}     # 会报TypeError错误
# print(dict3)

3.查

(1)获取单个元素的值——通过key去获取值: 字典名[key值]

注意: 使用字典名[key]的形式去获取字典中元素的值的时候,key值必须是在字典中存在的。否则报KeyError异常

【例】

print(xiaoming['age'])
print(xiaoming['face'])
通过get方法获取值: 字典名.get(key值)

获取字典中,不确定key对应键值对是否存在的时候,使用get去获取其对应的值

print(xiaoming.get('name'))


print(xiaoming.get('abc'))  # 结果是None

注意:None:python中的一个特殊值,表示没有,类似C中的NULL

【例】取字典中的'grade'对应的值,如果grade不存在就打印'不存在',否则直接打印'grade'对应的值

value = xiaoming.get('grade')
if value == None:
    print('不存在')
else:
    print(value)

(2)遍历字典

遍历字典拿到的是字典中所有的key值;在开发中使用这种方法去遍历字典,用[]不用get,因为key是真实存在的

for key in dict3:
    print(key, dict3[key])

注意:下面这个在开发的时候不建议使用,因为在获取键值对前需要一些转换的操作,消耗CPU

or (key, value) in dict3.items():
    print(key, value)

4.修改:通过key去拿到对应的元素,重新赋值

dict3 = {'a': 1, 'b': 2, 'c': 3}
dict3['a'] = 10
print(dict3)

输出{'a': 10, 'b': 2, 'c': 3}

【例】将上面的字典中所有的值变为原来的3倍

for key in dict3:
    # dict3[key] = dict3[key] * 3
    dict3[key] *= 3
print(dict3)
{'a': 30, 'b': 6, 'c': 9}

5.增加

通过key取值,然后赋值(如果这个key不存在,就是添加键值对。如果key存在,就是修改这个key对应的值)

注意:字典里面的key是唯一的

6..删除(删除的是键值对)

a. del语句

格式: del 字典[key]

dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
del dict1['b']  # 删除'b'对应的键值对
print(dict1)
输出:{'a': 10, 'c': False, 'd': [1, 2, 3]}


b. pop方法

格式: 字典.pop(key)    结果是被删除的键值对的值

dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}
result = dict1.pop('a')  # 结果是被删除的键值对的值
print(dict1, result)

输出:{'b': 10.3, 'c': False, 'd': [1, 2, 3]} 10

popitem方法: 随机删除(取出)一个元素

dict1 = {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3], 'aa': 100}
dict1.popitem()
print(dict1)

【例】将字典中,值为字符串的全部删除

dict1 = {'a': 10, 'str': 'string', 'b': 10.3, 'c': False, 'd': [1, 2, 3], 'aa': 'haha'}
print(dict1)
for key in dict1.copy():
    value = dict1[key]  # 取键对应的值
    if isinstance(value, str):  # 判断值是否是字符串
        dict1.pop(key)  # 移除key对应的键值对
输出   {'a': 10, 'b': 10.3, 'c': False, 'd': [1, 2, 3]}

7.keys和values方法

字典.keys(): 获取字典中所有的key,结果是一个列表

字典.values(): 获取字典中所有的值, 结果是一个列表

8. update

字典1.update(字典2) :用字典2中的元素去更新字典1中的元素(如果字典2中的键值对字典1没有,就直接添加。有的话就修改)

【例】

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict1.update({'d': 123, 'e': 'hhh', 'a': 100})
print(dict1)

输出:{'a': 100, 'b': 2, 'c': 3, 'd': 123, 'e': 'hhh'}

9.in 和 not in  判断字典中是否有指定的key

 
 
print('a' in dict1)
print(100 in dict1)

10.len(字典)是获取字典的长度






猜你喜欢

转载自blog.csdn.net/zzqhello2018/article/details/80867371