Python从零开始学 Day03 ~列表,元组,字典,集合

Python从零开始学 Day03 ~列表,元组,字典,集合

本文是上一篇文章的后续,详情点击该链接

列表

       用于存储任意数目、任意类型的数据集合。

       列表是内置可变序列,是包含多个元素的有序连续的内存空间。

话不多说,撸代码~

创建序列
#创建序列
arr = [1,'小明',9.6,'A',[2,3,6,7,5]]
print(arr)

在这里插入图片描述

range()创建整数列表

       range()可以帮助我们非常方便的创建整数列表。语法格式为:

       range([start,] end [,step])

a = list(range(10))
b = list(range(3,10))
c = list(range(1,20,2))
print("a = " , a)
print("b = " , b)
print("c = " , c)

在这里插入图片描述

       由此可见,其语法格式是包头不包尾

推导式生成列表

# x 从 0 开始 循环5次 创建 5 个 * 2 的元素
a = [x * 2 for x in range(0,5)]
print(a)

在这里插入图片描述

还可以通过if过滤
a = [x * 2 for x in range(100) if x % 6 == 0]
print(a)

在这里插入图片描述

乘法扩展

a = [1,2,3]
b = a * 2
print(b)

在这里插入图片描述

Del删除
a = [1,2,3,4,5,6,7,8,9]
del a[3]
print(a)

在这里插入图片描述

列表的方法

方法 描述
list.append(x) 将元素 x 增加到列表 list 尾部
list.extend(Lt) 将列表 Lt 所有元素加到列表 list 尾部
list.insert(index,x) 在列表 list 指定位置 index 处插入元素 x
list.remove(x) 在列表 list 中删除首次出现的指定元素 x
list.pop([index]) 删除并返回列表list 指定位置 index 处的元素,默认是最后一个元素
list.clear() 删除列表所有元素,但并不是删除这个列表
list.index(x) 返回第一个 x 的索引位置,若不存在 x 元素抛出异常
list.count(x) 返回指定元素 x 在列表 list 中出现的次数
len(list) 返回列表中包含元素的个数
list.reverse() 所有元素原地翻转
list.sort() 所有元素原地排序
list.copy() 返回列表对象的浅拷贝

还有那个 slice 切片操作,和字符串差不多,这里就不描述了,后面用到时候再说...

列表排序

修改原列表,不建新列表的排序
import random
a = [1,3,6,7,8,2,5,9]
#升序
a.sort()
print(a)
#降序
a.sort(reverse=True)
print(a)
#打乱
random.shuffle(a)
print(a)

在这里插入图片描述

建新列表的排序

通过内置函数 sorted()进行排序,返回新列表,不对原列表做修改。

#升序
a = [1,3,6,7,8,2,5,9]
b = sorted(a)
print(b)
#降序
b = reversed(a) #reversed返回的是迭代器对象
print(list(b))

在这里插入图片描述

        至于max,min,sum这三个方法都有相应的返回值,顾名思义,就不细写了。

        二维列表和Java的二维数组差不多。

元组tuple

        列表属于可变序列,元组属于不可变序列。所以元组没有增,删,改相关的方法。但是元组可以转化成列表然后实现增删改。

在这里插入图片描述在这里插入图片描述

列表和元组可以互相转换

#元组转化列表
tup = (1,2,3)
lis = list(tup)
#列表转化为元组
a = tuple(lis)

        其实我个人觉得,暂时可以理解为,元组就像是列表的常量

Zip,将多个列表合并成一个元组

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
d = zip(a,b,c)
print(tuple(d))

在这里插入图片描述

字典

        字典是“键值对”的无序可发序列,字典中的每个元素都是一个“键值对”,包含:“键 对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。

        列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值 对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、 字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。

        和C++,Java里面的Map差不多

字典的创建

#方法一:
dic = {1:"小明",2:"小张",3:"小刚"}
print(dic)
#方法二:
a = [1,2,3]
b = ["小明","小张","小刚"]
dic2 = dict(zip(a,b))
print(dic2)
#方法三
ar = dict.fromkeys([1,2,3])
print(ar)

在这里插入图片描述

字典元素的访问

dic = {1:"小明",2:"小张",3:"小刚"}
#通过  [键]  获得“值”。若键不存在,则抛出异常。
print(dic[2])
# 通过 get()方法获得“值”。推荐使用。
#优点是:指定键不存在,返回None;
# 也可以设定指定键不存在时默认返回的对象。推荐使用 get()获取“值对象”。
print(dic.get(2))

在这里插入图片描述

dic = {1:"小明",2:"小张",3:"小刚"}
#列出所有的键值对
print(dic.items())
#列出所有的键,列出所有的值
print(dic.keys())
print(dic.values())
# len() 键值对的个数
print(len(dic))
#判断键是否存在
print(2 in dic)

在这里插入图片描述

字典元素添加、修改、删除

dic = {1:"小明",2:"小张",3:"小刚"}
#新增键值对
dic[4] = '小海'
print(dic)
#如果键不存在则新增,如果存在则覆盖
dic[1] = '小赵'
print(dic)
#=============================================================
#使用 update()将新字典中所有键值对全部添加到旧字典对象上。
# 如果key 有重复,则直接覆盖。
dic2 = {4:"小海",5:"小凯",1:"小刘"}
dic.update(dic2)
print(dic)
#=============================================================
#字典中元素的删除,可以使用 del()方法
del(dic[2])
print(dic)
# 或者 clear()删除所有键值对;pop()删除指定键值对,并返回对应的 “值对象”
data = dic.pop(1)
print(data)
#随机删除返回键值对
dic.popitem()
print(dic)

在这里插入图片描述

序列解包

        序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。

(a,b,c) = [1,2,3]
print(a)
print(b)
print(c)

在这里插入图片描述

       序列解包用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用 items();如果需要对“值”进行操作,则需要使用 values()

#默认是键
dic = {1:"小明",2:"小刚",3:"小刘"}
a,b,c = dic
print(a)
print(b)
print(c)

在这里插入图片描述

dic = {1:"小明",2:"小刚",3:"小刘"}
#对键值对进行操作
a,b,c = dic.items();
print(a)
#对值进行操作
d,e,f = dic.values()
print(d)

在这里插入图片描述

集合

       集合是无序可变,元素不能重复,实际上集合底层是字典实现。集合中的所有元素都是字典中的键对象,因此是唯一的

       方法基本上差的不多

Python 对集也提供了并集、交集、差集等运算,和数学中的概念一样

>>> a = {1,3,'alvin'} 
>>>> b = {'he','it','alvin'} 
>>>> a|b    #幵集 {1, 3, 'alvin', 'he', 'it'} 
>>>> a&b     #交集 {'alvin'} 
>>>> a-b     #巩集 {1, 3} 
>>>> a.union(b)    #幵集 {1, 3, 'alvin', 'he', 'it'} 
>>>> a.intersection(b)  #交集 {'alvin'} 
>>>> a.difference(b)   #巩集 {1, 3}

猜你喜欢

转载自blog.csdn.net/qq_41424688/article/details/107055465