目录

  • 1.必看
  • 2.列表、元组、字典、集合最基本的创建
  • 3.列表
  • 4.元组
  • 5.字典
  • 6.集合


1.必看

1.1列表、元组、字典、集合的区别
列表:顺序存储结构,占更多存储空间(默认存了指针),元素不必相同,用"[]“表示。
元组:元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示。
字典:字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。定义 Dictionary 使用一对大(花)括号”{}"。(其中前三个也可称之为Python的数组类型)
集合:用的比较少,无序不重复元素集。
1.2
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
1.3为什么有了列表还要有元组、字典、集合?
降低程序的时间复杂度
比如字典:Python字典因为在存储元素时,将key哈希转化到了存储地址,所以如果要在字典里查找某个元素的key,不需要循环字典,只需要进行同样的哈希计算就可以得到了。
1.4本文属于学习笔记,所以很多具体的知识点并没有记录,关于具体知识点可以访问菜鸟教程

2.列表、元组、字典、集合最基本的创建

2.1
列表的创建

a = [1,2,3]

字典的创建(字典中每一对数据都是‘键’和‘值’相对应的)

a = {key1:value1,key2:value2}

元组的创建

t = (1,2,3)

集合的创建

s = {'s','e','t'}

2.2
用list()、tuple()、dict()、set()内置方法转换

s = set([1,2,3])

3.列表

3.1列表的三个优点:
1.列表里想装啥就装啥,即:他可以包含不同种类、任意类型的对象,甚至可以嵌套列表,专业点的词儿叫:异构性;所以,列表里面的数据可以是不同类型的数据。
2.列表里装的元素都是有顺序的,可以按照位置序号获取单个元素,也可以用分片的方法来进行多个连续元素的获取,来个专业词汇,叫做:有序性。所以,列表的下标可以进行索引和切片。
3.列表的大小和内容可以随意改变,在插入、删除、修改列表元素时,不需要建立一份新的列表拷贝,而是在原来的内存地址上直接修改列表对象。这个叫“本地可修改”。所以,列表可以删除元素,列表拼接等。
3.2列表常见操作和方法
1.列表的索引
2.列表的分片操作
3.列表删除元素
4.列表的拼接
5.列表的重复
6.元素成员判断
7.求列表的长度
8.求列表的最大、最小值
9.在列表中插入元素
10.反转一个列表
11.计算列表中指定元素x的个数
12.查找列表中指定元素的位置
13.列表的排序

4.元组

元组类似于列表,是一个基于位置的有序对象集合,但是元组一旦创建之后就不能更改,因此列表中修改元素的操作对于元组都不适用。

  • 为什么要使用元组?

元组和其他不可变量类似于其他语言中“常量”的声明,它的不可变性提供了某种一致性,这样可以确保元组在程序中不会被另一个引用修改。
Mark Lutz——《Learning Python》中文版

5.字典

5.1常见操作方法

操作

解释

.key()

获取所有键

.values()

获取所有值

.items()

获取所有“键+值”元组

len()

获取键值对的数量

.get(key,default)

获取键的值,若键不存在,则返回设定的默认值default(默认为None)–与[key]获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”

dict1.update(dict2)

合并两个字典

5.2索引

dict1[key]
#key是字典的键,返回的是对应的值value
dict1.get(key)
#get方法获取键的值,若键不存在,则返回设定的默认值default(默认为None)--与`[key]`获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”

5.3遍历

for i in dict1.keys():
	print(i, dict1[keys]) 
# 遍历字典中所有的键,并输出键值对 
for i in dict1: 
      ...
# 该方法与上述方法等价 
for keys, values in dict1.items():
     ... 
# 遍历字典中所有的键值对

5.3排序
1.①借助.keys()方法和list()函数将键提取成list,对list排序后输出

D = {'a':1, 'c':3, 'b':2}
D1 = list(D.keys())
D1.sort()
for i in D1: 
    print(i, D[i])
# 输出:
# a 1
# b 2
# c 3

②借助内置的sorted()函数可对任意对象类型排序,返回排序后的结果。
tips:对于sorted(字典)来说,返回的是排序好的keys(以list的形式)

D = {'a':1, 'c':3, 'b':2}
for i in sorted(D):
    print(i, D[i])
# 输出:
# a 1
# b 2
# c 3

2.用字典的值对字典进行排序,将{1: 2, 3: 4, 4:3, 2:1, 0:0}按照字典的值从大到小进行排序。

a = {1:2,3:4,4:3,2:1,0:0}
sorted_a = sorted(a.items(),key=lambda a:a[1],reverse=False)
print(sorted_a)

★sorted(iterable, key=lambda a:a[1], reverse=False)
①其中iterable是可迭代对象
②reverse = True 降序 , reverse = False 升序(默认)
③key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
④key=lambda a:a[1],是个lambda表达式,冒号右边的值返还给a。而a[1]表示a下标为1的值返还给a,最后,lambda表达式的值让key这个变量来指向。

6.集合

6.1

  • 为什么使用集合?
    1.由于集合内元素是不重复的,因此可以将list或其他类型的数据转换成集合,从而过滤掉其中的重复元素
    2.通过集合的交并补等操作,可以比较列表、字符串以及其他可迭代对象的差异。

6.2集合的常用操作

set1 `&` set2 
#交运算
set1 `|` set2 
#并运算
set1 `-` set2 
#差运算,set1减去set1 `&` set2部分

6.3集合的常用方法

set1.add('x')  
#添加元素。注意:集合中只能包含可哈希的对象,即list,dict都不能嵌入到集合中
set1.union(...)  
#取并集,效果等同于 | ,但是括号里可以是list,tuple,其他dict甚至是dictset1.intersection(...)  
#取交集,同上set1.issubset(set2)  
#判断set1是否是set2的子集