[python基础]3 python数据类型下篇(不得不看的字典,列表大总结)

(ps写了两小时的文档突然断就没了!还有两小时写上就去坐车车了!)上一节中主要学习了数据类型中的数字类型和字符串,忘记的小伙伴可以复习一下哟!这一节将总结列表,字典,集合等!!这部分内容可说处处可用,不管是后续的爬虫,数据分析还是机器学习等,所以小伙伴一起加油呀!

1 python数据类型

在这里插入图片描述

2 列表

2.1 列表类型

python列表是任意对象的有序结合,表示方式使用**[]**。这个"任意"二字,意思是这里面的元素可以是单个字符串,也可以是嵌套的列表,也可以是字典等。

list=["保罗","威少","韦德"]
print(list)
list1=[["保罗儿子","保罗老爸"],"威少","韦德"]
print(list1)
print(list[1])# 威少 这里注意 下标是0开始

2.2 列表的常用方法

方法 描述
list.append(x) 末尾增加一个元素
list.insert(i,x) 在索引i的位置插入元素x
list.remove(x) 移除从左到右第一个出现的x
list.clear() 移除列表所有元素
list.pop([i]) 删除列表中给定元素并返回
list.count(x) 统计x在列表中出现的个数并返回
list.sort(key=None, reverse=False) 对列表中元素进行排序
list.reverse() 翻转列表中的元素
len(list) 列表中的元素个数

小伙伴可以动手尝试下这些方法哟!

#测试remove方法 删除第一次出现的元素
list2=["保罗","威少","韦德","保罗"]
#测试count方法
list2.count("保罗")
print(list2)
#测试remove方法
list2.remove("保罗")
print(list2)
#测试sort方法
list2.sort()
#测试reverse方法
print(list2.reverse())
#测试insert方法
list2.insert(2,"科比")
print(list2)

2.3 列表的切片

从字面上来说,“切片”(我去现在好饿呀,想吃面包了。。)是一个局部概念,也就是满足从列表中选取一部分元素。

  • 表示方法

使用的是":",我们举个例子

list3=[1,2,3,4,5,6,2,1]
print(list3[0:1])#1 记住之前说好的第一个元素下标是0哟

取出从左到右的前三个数,我们将":"放在前面

print(list3[0:3])#前三个数
print(list3[:3])#前三个数 注意这里“:”放在了前面 

我们将“:”放在X后面会出现什么情况?将输出X到末尾元素

print(list3[3:])#[4, 5, 6, 2, 1]

上面我们的取值都是正数,如果是负数呢?

print(list3[-3])#6
print(list3[-3:])#[6,2,1]
print(list3[:-3])#[1, 2, 3, 4, 5]

小结:我们可以通过将":"放在X的不同位置进行取值,通知X可以是负数也可以是正数。

2.4 列表的简单应用

  • 列表作为栈

什么是栈?,特点为先进后出,生活中的场景就是:我们叠盘子的时候,从下往上放,先放在下面的一般来说都会后取出来,这就是典型的栈结构。那么在算法中常用的比如二进制转换,二叉树的非递归先序遍历等

那我们思考怎么用列表来表达呢?使用append在最后加入元素,然后使用pop弹出来就好了。

#列表作为栈
stack=[1,2,3]
stack.append(4)
stack.append(5)
print(stack.pop())#5
print(stack.pop())#4
print(stack.pop())#3
  • 列表作为队列

队列作为栈的兄弟,特点不同才能更好的相处,而且正好相反为先进先出。就好比我们排队买火车票的场景。

#列表作为队列
from collections import deque
deque1=deque(['威少',"保罗","库里"])
deque1.append("小库里")
deque1.append("里弗斯")
print(deque1.popleft())#威少
print(deque1.popleft())#保罗

3 元组

3.1 元组类型

元组的表示方式为"()",元素之间使用逗号分开。而且非常重要的是它里面的元素是不能修改的。比如

tuple=('威少',"保罗","哈登")
print(tuple)
#tuple([1])="库里"

3.2 元组常用方法

列表中的方法元组基本都可以使用。切片也好使。

print(tuple)
print(tuple[:2])#('威少', '保罗')
print(tuple[2:])#('哈登',)
print(tuple[-1:])#('哈登',)

3.3 元组的应用场景

  • 元组的赋值(有多少个元素就有多少个变量来接收)
t = ('威少', "保罗", "库里")
name1, name2,name3 = t
print(name1, name2,name3)#威少 保罗 
  • 元组排序

方法一:直接使用函数

scores = (100,20,30,42,78)
scores_sort=sorted(scores)# 默认为升序
print(scores_sort)#[20, 30, 42, 78, 100] 输出为列表 

方法二:转换为列表再排序

scores = (100,20,30,42,78)
scores_list=list(scores)
scores_list.sort()
print(scores_list)#[20, 30, 42, 78, 100]
  • 分割元素为三部分输出
scores = (100,20,30,42,78)
minscore,*middlescore,maxscore=scores
print(minscore)#100
print(middlescore)#[20, 30, 42]
print(maxscore)#78

4 集合

4.1 集合类型

集合是一个无序不重复的序列。无序也就意味着不能通过数字进行索引。通常使用set()函数来创建,或者大括号"{}".

#集合
age={18,17,18,12,13}
print(age)#{17, 18, 12, 13}

age1=set([18,17,18,12,13])
print(age1)#{17, 18, 12, 13}

4.2 集合常用方法

  • 集合的内置函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQJ7Tgct-1579212411422)(C:\Users\lj\AppData\Roaming\Typora\typora-user-images\image-20200117041909011.png)]

序号 函数 描述
1 add(self, *args, **kwargs) 是把要传入的元素做为一个整个添加到集合中
2 clear(self, *args, **kwargs) 清空集合里面的所有元素
3 copy(self, *args, **kwargs) 复制集合里面的所有元素 ,返回一个浅复制
4 difference(self, *args, **kwargs) 求两个集合里面的不同的元素 ,又称差
5 difference_update(self, *args, **kwargs) 返回删除了 set “集合2”中含有的元素后的 set “集合1”
6 discard(self, *args, **kwargs) 如果在 set “集合”中存在元素 x, 则删除
7 intersection(self, *args, **kwargs) 求两个集合里面相同的元素,又称并 ,返回只保留含有 set “集合2”中元素的 set “集合1”
8 intersection_update(self, *args, **kwargs) 返回只保留含有 set “集合2”中元素的 set “集合1” ,并更新自己
9 isdisjoint(self, *args, **kwargs) 判断两个集合是不是不相交,并返回
10 issubset(self, *args, **kwargs) 判断集合是不是包含其他集合,等同于a>=b
11 issuperset(self, *args, **kwargs) 判断集合是不是被其他集合包含,等同于a<=b
12 pop(self, *args, **kwargs) 删除并且返回 set “集合”中的一个不确定的元素, 如果为空则引发 KeyError
13 remove(self, *args, **kwargs) 从 set “集合”中删除元素 , 如果不存在则引发 KeyError
14 symmetric_difference(self, *args, **kwargs) 返回一个新的 set 包含 外面 和 里面 中不重复的元素也就是两个集合不重复的元素
15 symmetric_difference_update(self, *args, **kwargs) 返回含有 set “里面”或者 set “外面”中有而不是两者都有的元素的 set “外面”
16 union(self, *args, **kwargs) 把两个集合连接起来,又称并
17 update(self, *args, **kwargs) 可以在集合里面添加多项
  • 代码实践
nbaPlaer={'库里','汤普森','詹姆斯'}
#添加
nbaPlaer.add("科比")
print(nbaPlaer)
#update可迭代对象
nbaPlaer.update("abcd")
print(nbaPlaer)
#集合的删除 set.remove(key),元素(键)必须存在于集合中,否则会报错。无返回值
nbaPlaer.remove("a")
#清空
nbaPlaer.clear()

numbers1 = {1,7,3,4,5}
numbers2 = {3,4,2,6,7}

# 对两个集合进行交集运算
numbers_inter = numbers1 & numbers2
print(numbers_inter)# {3,4,7}
# 对两个集合进行并集运算
numbers_union = numbers1 | numbers2
print(numbers_union)#{1, 2, 3, 4, 5, 6, 7}

4.3 集合的应用场景

  • 运用集合去重
list5={2,2,2,2,4}
set1=set(list5)
print(list5){2, 4}
  • 集合关系判定

这里也就是上面所说的交集,并集,差集,父子集判断

5 字典

5.1 字典类型

字典可存储任意类型对象,用{}标识。字典由一个无序的键(key)值(value)对的集合。

dic={key1:value1,key2:value2}

5.2 字典4种创建方法

  • 使用大括号的方式创建字典
#创建方式1
nab_player_msg = {"name": "库里", "age": 30}
  • 使用关键字参数和类型构造函数来创建字典
#创建方式2
nab_player_msg1 = dict(name = "库里", age = 30)
  • 使用zip函数将名字和值连接构成字典
#创建方式3
keys=["name",age]
values=["库里","30"]
nab_player_msg2 = dict(name = "库里", age = 30)
  • 使用fromkey通过一个键序列和所有的键的额可选初始值来创建字典
#创建方式3
keys=["name",age]
nab_player_msg3=dict.fromkeys(keys,"?")

5.3 字典的常用遍历方式

  • 通过遍历key值遍历字典
#创建方式1
nab_player_msg = {"name": "库里", "age": "30"}
#字典遍历方式1 通过key
for key in nab_player_msg:
    print(key+":"+nab_player_msg[key])
  • 通过items遍历字典
for k,v in nab_player_msg.items():
    print(k+":"+v)
  • 通过zip遍历字典
for k,v in zip(nab_player_msg.keys(),nab_player_msg.values()):  
    print(k+":"+v)

5.4 字典的应用场景

  • 使用多个键值对,存储描述一个对象更加复杂的数据信息
  • 嵌套的字典

Big_plaer = {
    '美国':{
        '科比':['得分后卫','牛掰'],
        '保罗':['控球后卫','稳']
    },
    '大陆':{
        '姚明':['中锋','霸气']
    }
}
print(Big_plaer)
for i in Big_plaer:
    print(i,Big_plaer[i])

6 总结

不知道你们看完有一点点收获吗?如果有收获希望你

  1. 点赞 给予我更多鼓励同时让更多人学习
  2. 关注我公众号[我是程序员小贱]获取更多的干货。相信我不会让你们失望!
    在这里插入图片描述
发布了29 篇原创文章 · 获赞 51 · 访问量 7775

猜你喜欢

转载自blog.csdn.net/L15519543837/article/details/104013574