上海day6 ---- 列表、元组、字典和集合

本文深入讲解Python中的数据类型,包括列表、元组、字典、集合等,详细介绍了每种类型的特性和使用方法,以及如何利用这些数据类型解决实际问题。

目  录

一、列表收尾

二、元组

三、字典

四、集合

五、数据类型总结

 

一、列表其他内置方法

1、count():计算列表中元素的个数

ss = [1,2,3,4,23,2,2,1]
ss.count(2)
3

2、clear() : 清除容器内数据

ss = [1,2,3,4,23,2,2,1]
ss.clear()
ss
[]

3、reverse() 将列表反转

ss = [1,2,3,4,23,55,66]
ss.reverse()
ss
[66, 55, 23, 4, 3, 2, 1]

4、sort() : 对列表内元素进行排序,默认是从小到大;

      若添加参数 sort( reverse = True) 就变成从大到小。

ss = [23,34,12,24,76,53]
ss.sort()  # 默认从小到大
ss
[12, 23, 24, 34, 53, 76]
ss.sort(reverse=True)  # 从大到小
ss
[76, 53, 34, 24, 23, 12]

类型总结:

1、可存多值。

2、有序,可被索引

3、可变类型:列表是可变类型的原因及内部原理

练习:用列表实现队列,用列表实现堆栈。

#队列的特点是先进先出
li = []
li.append('egon')
li.append('jason')
li.append('sean')
li.append('tank')

print(li.pop(0))
print(li.pop(0))
print(li.pop(0))
print(li.pop(0))
队列实现
#堆栈的特点是先进后出或后进先出
li = []
li.append('egon')
li.append('jason')
li.append('sean')
li.append('tank')

print(li.pop())
print(li.pop())
print(li.pop())
print(li.pop())
View Code

二、元组

基本用法:

1、作用:可以存储多个元素,元素与元素之间可以用逗号隔开,元素可以是各个类型,但是元组不能被修改

2、定义:与列表相似,只是把中括号[ ] 改成 小括号 ( )

优先掌握的操作:

1、按索引取值(正向取,反向取),只能取值不能改

ss = (23,34,12,24,76,53)
ss[0:4:2]
[23, 12]

  注意:只能取不能改指的是,元组内部的元素不能改,但是当内部元素是可变类型容器时如列表、字典等,该元素可以修改

tuple = ('a','b','c',['jason','egon','tank','sean'])
tuple[3][0] = 'alex'  # 将元组中第4个元素列表中的值改变
tuple
('a', 'b', 'c', ['alex', 'egon', 'tank', 'sean'])

  注意:元组和列表一样只能添加容器类型

# t1 = tuple(1)  # 报错  必须传容器类型

***** 注意:在定义容器类型时,哪怕其中只有一个元素也要用逗号分隔开

n1 = (1)  # 没有加逗号分开,默认识别为整型
type(n1)
<class 'int'>

n2 = (1,)  # 加了逗号,识别为元组类型
type(n2)
<class 'tuple'>

2、切片(顾头不顾尾,步长)  如 1中所示

3、成员运算 in 和 not in

tuple = ('a','b','c',['jason','egon','tank','sean'])
'jason' in tuple
False
'a' in tuple
True

4、长度 len()

tuple = ('a','b','c',['jason','egon','tank','sean'])
len(tuple)
4

5、循环 

类型总结:

1、存多个值。

2、有序。

3、不可变类型。原因及原理结构如下图所示:

三、字典

基本用法:

1、作用:可存储多对 key:value 键值对,key是对value的描述,所以key多是字符串类型

  强调:在字典中key值只能是不可变类型如int float str tuple ,value可以是任意类型

# d1 = {1:'1',0:'0',1.11:'1.11',(1,2):'到底能不能呢?'}
# print(d1[1.11])
# print(type(d1))
# print(d1[(1,2)])
示例

2、定义:大括号{ },里面存键值对,并用逗号分隔开

  注意:字典中的key值不能是重复的,只能唯一标识一条数据,如果存在多个重复的key,会被重复赋值,输出最后一个key

d2 = {'name':'jason','name':'tank','name':'nick','password':123}
d2['name']  # 多个‘name’,只输出最后一个name对应的键值‘nick’
'nick'

优先掌握的方法:

1、按key存取值,可存可取!

d2 = {'name':'nick','password':123}
d2['name'] = 'tank'   # 直接根据key值重新赋值
d2
{'name': 'tank', 'password': 123}

******* 注意:赋值语句当key不存在的情况下,会自动添加一个新的键值对

d2 = {'name':'nick','password':123}
d2['age'] = 19
d2
{'name': 'nick', 'password': 123, 'age': 19}

2、长度 len()

3、成员运算 in 和 not in

4、删除操作

  a、del (dict['key'])

  b、pop()  弹出的是value值;当key不在是会报错

d2 = {'name':'nick','password':123}
d2.pop('password')  # 弹出的是value值
123

d2.pop('age')  # 当key值不存在时,会报错!
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 'age'

5、定义字典的三种方式:

   第一种:

 # d1 = {'name':'jason','password':123} 

   第二种:***** 

d2 = dict(name = 'jason',age = 13,paw = 123)
d2
{'name': 'jason', 'age': 13, 'paw': 123}

  第三种:了解即可

l = [
    ['name','jason'],
    ['age',18],
    ['hobby','read']
]
# d = {}
# # for i in l:  # ['name','jason'],['age',18]...
# for k,v in l:  # ['name','jason'],['age',18]...
#     # d[i[0]] = i[1]
#     d[k] = v
# print(d)
# d3 = dict(l)
# print(d3)
View Code

******* 6、三种方法: 键keys() ,值values() ,键值对items()  -------- 引出Python2 和Python3 的区别

# d1 = {'name':'jason','password':123}
# print(d1.keys())  # dict_keys(['name', 'password'])  老母猪

# print(d1.values())  # dict_values(['jason', 123])  老母猪  现在就把它当成一个列表来看即可

# print(d1.items())  # dict_items([('name', 'jason'), ('password', 123)])
# 就把它看成是列表套元组,元组的第一个元素是字典的key 第二个元素是字典的value

******* 7、重要的方法: get()  根据key值获取value

d1 = {'name':'jason','pwd':123}
print(d1['name'])
print(d1['age'])
print(d1.get('name','你给我的name在字典的key中'))
res = d1.get('age')  # 当字典的key不存在的情况 不报错 返回None
res1 = d1.get('xxx','你给我的age在字典的key中')  # 当字典的key不存在的情况 不报错 返回None
# get可以传第二个参数。当你的key不存在的情况下,返回第二个你写好的参数信息

其他4种用法:

1、dict.fromkeys()  快速创建一个字典

d2 = ['jason','tank','sean','egon']
dict.fromkeys(d2,123)
{'jason': 123, 'tank': 123, 'sean': 123, 'egon': 123}

2、dict.popitem()  尾部以元组的形式弹出键值对

d3 = {'jason': 123, 'tank': 123, 'sean': 123, 'egon': 123}
d3.popitem()  # 尾部弹出
('egon', 123)

3、dict.setdefault()  分两种情况,如下所示:

d1 = {'name':'jason','pwd':123}
res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
print(d1,res1)
res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
print(d1,res2)

>>>:
{'name': 'jason', 'pwd': 123} jason
{'name': 'jason', 'pwd': 123, 'age': 18} 18
View Code

4、dict.update()  添加键值对,并以dict.update(键值对)的形式进行更新,示例如下:

d1 = {'name':'jason','pwd':123}
d2 = {"age":18}
d1.update(d2)
# d1['age'] = 18
# d1.update(age=666)
print(d1)
>>>:
{'name': 'jason', 'pwd': 123, 'age': 18}

5、循环

类型总结:

1、可存多个值

2、无序

3、可变类型

四、集合

定义:可以包含多个元素,并用逗号隔开

# 定义:
# s = {1,2,3,4,5,6}  # <class 'set'>  # s = set()
# print(type(s))

# s1 = set()
# print(type(s1))  # 注意在定义空集合的只能用关键字set

# x = {}  # <class 'dict'>  如果你仅仅只写了一个大括号 那么python默认将它当做字典类型

作用:1、去重 2、关系运算

集合的元素需要遵循的三个原则:

1、每个元素必须是不可变类型。

  可变:不可hash

  不可变:可hash

2、没有重复的元素

# s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}
# print(s)  # 自动将重复的元素 去除

3、无序

s = {1, 2, 3, 4, 5, 6}
print(s[1])  # 报错!

  注意:集合的目的是将不同的值存放到一起,不同的集合做关系运算,无需纠结单个的值

优先掌握的操作:

1、长度 len()

2、成员运算:in 和not in

3、| 合集   &交集   — 差集     ^ 对称差集 

pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}
# 既报名python也报名linux的学生姓名
print(pythons & linux)  # 交集

# 只报名python的学生姓名
print(pythons - linux)

# 只报名linux的学生姓名
print(linux - pythons)

# 没有同时报名两门课程的学生姓名
print(pythons ^ linux)  # 对称差集

# 取出所有报了名的学生姓名
print(pythons | linux)

4、父集 > ,>=     子集 <,<=  

s = {1,2,3,4,5}
s1 = {1,2}
s>s1     #  判断s是不是s1的父集
True

5、add()  remove()  discard()

ss = {1,2,3,4}
ss.add(('a','b'))  # add()是添加“单个元素”,无论什么类型都当做一个元素
ss
{1, 2, 3, 4, ('a', 'b')}
View Code

  remove 和 discard 的区别是:如果要删除的元素不在集合内,用remove会报错,用discard不会报错,会返回None

ss = {2,3,4,('a','b','d')}
ss.remove(2)
ss
{('a', 'b', 'd'), 3, 4}
ss = {2,3,4,('a','b','d')}
ss.discard(3)
ss
{('a', 'b', 'd'), 2, 4}
View Code

 五、数据类型总结

1、8种数据类型---- int 、float、str、list、dict、tuple、set、bool

2、可变类型:list 、dict 、set

3、不可变类型:int 、float、str、tuple、

转载于:https://www.cnblogs.com/qinsungui921112/p/11134393.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值