list(列表):类似于js中的数组
1、声明语法:
l1 = []
l2 = list()
l3 = ['1','2','3']
2、列表用下标访问:
L = ['1','2','3','1','2','3','1','2','3']
L[5] => 3
3、分片访问:生成一个新列表
L = ['1','2','3','1','2','3','1','2','3']
L[1:5] => ['2','3','1','2','3']
L[:5] => ['1','2','3','1','2','3']
L[2:] => [,'3','1','2','3','1','2','3']
当分片访问下标超出列表范围的时候,就不考虑多余下标内容,也不会报错
python列表中下表取值还能用负数,用负数的话那就是从末尾开始往前数
4、del:删除操作
L = [1,2,3,4,5,6,7,8]
del L[2] ---->删除L列表中下标为2的字段
del L ---->删除L列表,在内存中直接删除,在之后的代码再次去请求回去这个L的话就会报错了
5、相加操作:
a = [1,2,3]
b = [4,5,6]
c = a + b ---->c = [1,2,3,4,5,6]
同理相乘操作,列表和一个整数相乘的话(注意只能和一个整数相乘)就是将同一个列表内容重复整数次
6、成员运算:(in / not in)
b = 1
a = [1,2,3,4,5]
b in a ---->返回True
7、for和while循环运算
for i in L:
print(1)
双层或多层列表循环:
L= [["one", 1], ["two", 2], ["three", 3] ]
for k,w in L:
print(k,'--',w)
---->
one -- 1
two -- 2
three -- 3
这里需要注意的是多层列表中,列表的每个元素的层级都必须是一致的,如果某个缺少一级或者多一级,在循环的时候就会报错!
8、创建列表的简写方法:
a = [1,2,3,4]
b = [i for i in a] ---->[1,2,3,4]
在创建的同时还能对i这个数字进一步的改造,例如:
b = [i *10 for i in a] ----> [10,20,30,40]
b = [i*10 for i in a if i<35] ----> [10,20,30]
嵌套列表便利简写:
b = [m + n for m in M for n in N if m+n <100]
9、列表的常用函数
len() --》 获取列表的长度
max() --〉获取列表中元素的最大的一个数,如果里面有字母等比较的就是首字母等等,具体的需要百度。
min() -->获取列表中元素的最小的一个数
list() -->将别的对象转换成列表的方法
append()-->在列表的末尾追加一个新的值,更改原列表
insert(位置下标,新的值) -->在指定位置插入新的值,更改原列表
pop() -->删除末尾的值,del能够指定删除某个位置的值
remove(value) -->删除指定值,注意并不是下标
clear() -->清除,清除整个列表
reverse() -->原地反转列表
extend() -->把一个列表直接拼接到另一个的后面
count() -->查找一个值在列表中出现的次数
copy() -->拷贝,将该列表在内存中再复制一个相同的数据,然后将这个数据指向新的变量,在更改新列表还是旧列表都不会影响到对方。这个地方涉及到了深浅拷贝问题:链接https://www.cnblogs.com/blaomao/p/7239203.html,有空还得完善下这个知识点!!!
tuple(元组):
1、声明语法:
t = ()
t = tuple()
t = (1,) --->这里需要注意的是当新建的元组中只有一个值的时候,这一个值后面必须跟上英文逗号!!!
2、元组的特性和列表区别不大,但是元组不能对里面的值进行修改,重点不能修改!!!
3、索引取值、分片操作、元组相加(这里的元组相加虽然像是修改了元组其实不是,元组的不能修改的是元组中的值,这里相加之后是形成了一个新的元组,新的元组并没有修改里面的内容)、元组相乘、成员检测、元组遍历(老师说元组遍历用for循环,for和while的循环都有自己的特定使用场景,但是我还是很闷逼到底是哪些场景)、多层元组遍历
4、元组函数
len() --->获取元组长度
max() --->获取最大值
min() --->获取最小值
tuple() --->转化为元组
count() --->计算某个值出现的次数
index() --->查找某个值在元组中的下标位置,如果有很多个同一元素,那就返回第一个
5、元组变量交换法
a,b = b,a
set(集合):
1、声明语法:
s = set()
s = {1,2,3} --->这种方法的声明{}中必须要有值
2、集合是一堆无序的且唯一的数据,所以集合没有索引下标也不能使用分片操作。还有集合中的数据是唯一的,那就可以用来做去重操作了。
3、集合内的数据可以是str,int,float,tuple,冰冻集合等,即内部只能放置可以哈希的数据。
4、成员检测(in,not in),for循环、多层集合循环,遍历内涵(就是简写)
5、集合函数
len() --->获取集合内部元素数量
max() --->获取最大值
min() --->获取最小值
set() --->生成一个集合
add() --->在集合的末尾加入新的数据
clear() --->清除集合,注意是原地清空数据
copy() --->拷贝
remove() --->在原集合上直接删除指定的值,如果要删除的值不存在就会报错
discard() --->在原集合上直接删除指定的值,但是要删除的值不存在不会报错,和remove相反
pop() --->随机移除一个元素,因为集合是无序的,所以就没有移除末尾这么一说了
intersection() --->交集,小学数学中的两个集合中同时拥有的数据组成的集合叫交集
difference() --->差集:当前集合减去交集中的数据,剩下的数据组成的集合叫差集
union() --->并集:两个集合中所有的元素合并为一个集合,这个集合叫并集(元素存在重复就保留一份就好)
issubset() --->检查一个集合是否是另一个的子集
issuperset() --->检查一个集合是否是另一个的超集
6、冰冻集合:简而言之就是这个集合里面的数据不能做修改的
s = frozenset()
dict(字典):就是一种组合数据,数据以键值对的形式存在
1、声明语法:
d = {}
d = dict()
d = {'one':1,'two':2}
2、字典是有序类型,但也是无序的,所以没有索引下标且不能分片操作
3、字典没有索引那怎么访问呢?用内部的键访问值
4、del['one'] --->删除某个键值对
5、成员访问,这里需要注意的是,访问只能访问键(也就是key),访问其他的是访问不到的
6、for循环:
for k in d:
print(k,'--',d[k])
for k in d.keys():
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k,'--',v)
既然知道了字典怎么循环了,那也就自然就可以知道字典的简写内涵了
7、字典函数
len() --->获取字典内部元素数量
max() --->获取最大值
min() --->获取最小值
str() --->将字典转换成字符串的格式,返回
clear() --->清除字典
items() --->将字典转换成的元组格式,返回
keys() --->获取由key值组成的一个结构
values() --->获取由value值组成的一个结构
get('three',默认值) --->获取指定key的值,还能设置这个key的默认值,如果字典中没有这个key,get()返回的就是这个默认值。这里的好处就是代码不会报错,而d['three']这样直接获取就会报错。
fromkeys() --->使用指定的序列作为键,使用一个值作为字典的所有的键的值
传值和传址的区别:
# 对于简单的数值,采用传值操作,即在函数内对参数的操作不影响外面的变量
# 对于复杂变量,采用传地址操作,此时函数内的参数和外部变量是同一份内容,
# 任何地方对此内容的更改都影响另外的变量或参数的使用
id()函数:可以获取一个对象的的内存id,这样就可以判别两个看起来值一样的变量是否真的是同一个