您的位置:首页 > 编程语言 > Python开发

(一)Python语法基础之列表、元组、字典、集合

2020-03-30 07:54 1046 查看

Python序列(列表、元组、字典、集合)

一、列表(List)与列表推导式

(一)列表(list)

1.列表是Python内置可变序列(列表中元素可增加删除或修改);
2.列表元素放在一对中括号[ … ]中,通过下标访问(下标从0到n-1表示从左向右访问,下标从-1到-n表示从右向左访问);
如:

>>>lst=[1,2,3,4,5,6]
>>>lst[0]
1
>>>lst[-1]
6

3.元素之间用逗号隔开,元素之间没有空隙(增加或删除元素时列表会自动扩展或收缩);
4.同一列表中各元素类型可以不同;

(二)列表常用方法(函数)
#列表的创建与删除:
1.直接用“=”赋值创建一个列表
2.list()系统函数将其他对象转换为列表
3.del命令 用于删除列表或元素
#列表元素操作方法:

方法 说明
lst.append(x) 将元素x添加至列表lst尾部
lst.extend(L) 将列表L中的全部元素添加至列表lst尾部
lst.insert(index,x) 在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一位
lst.remove(x) 在列表lst删除首次出现的指定元素,该元素之后的所有元素前移一位
lst.pop([index]) 删除并返回列表lst中下标为index(默认为-1)的元素
lst.clear() 删除列表lst中的所有元素,但保留列表对象
lst.index(x) 返回列表lst中第一个值为x的元素的下标,若不存在则抛出异常
lst.count(x) 返回指定元素x在列表lst中出现的次数
lst.reverse() 对列表所有元素进行逆序
lst.sort(key=None,reverse=False) 对列表lst中的元素进行排序,key用来指定排序依据,reverse决定升序(False)还是降序(True)
lst.copy() 返回列表lst的浅复制

注:(应尽量避免在列表中间插入或删除元素,或影响后面所有元素的下标)
1.append()、insert()、extend()都可以用于向列表添加元素,但这三个方法属于原地操作,不影响列表对象在内存中的起始地址;“+”(将两个列表的元素合成新的列表)和“*”(列表重复)也可以实现列表增加元素,但这两个运算符不属于原地操作而是返回新列表。
2.pop()、remove()、clear()用于删除列表元素,这三个方法属于原地操作不影响列表对象的内存地址;del命令也是原地操纵,也可以用于删除列表或列表元素。
3.sort()和reverse()是对列表原地排序和逆序,即用处理后的数据替代原始的数据,列表中元素原始的顺序全部丢失;若不想丢失原始列表,可以使用内置函数sorted()和reversed()会返回一个新的排序或者逆序后的迭代对象,对原始列表不做任何修改。

#内置函数对列表的操作

内置函数 说明
max() 返回列表中所有元素的最大值
min() 返回列表中所有元素的最小值
sum() 返回数值型列表中所有元素之和
len() 返回列表中元素个数
zip() 将多个列表中元素重新组合为元组并返回包含这些元组的zip对象
enumerate()
map() 将一个函数依次作用到序列或迭代器对象的每个元素上,并返回一个map对象作为结果
reduce() 可以将一个接受两个参数的函数以累积的方式从左到右依次作用到一个序列或迭代器对象的所有元素上
filter() 将一个单参函数作用到一个序列上,返回该序列中使得函数返回值为True的元素组成的filter对象,如果指定函数为None则返回序列中等价于True的元素

注:Python列表本身不支持其中元素直接的加、减、乘、除运算,但可以借助内置函数、标准库operator或扩展库numpy实现更复杂更强大的功能。

(三)列表推导式
#语法形式:lst[表达式 for 变量 in 序列或迭代对象]
1.嵌套列表的平铺

>>>vector=[[1,2,3],[3,2,1],[4,5,6]]
>>>lst=[num for elem in vector for num in elem]
>>>lst
[1,2,3,3,2,1,4,5,6]

2.过滤不符合条件的元素
3.在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素
4.使用列表推导式实现矩阵转置
5.列表推导式中使用函数或者复杂表达式
6.列表推导式支持条件对象迭代
7.使用列表推导式生成100以内的所有素数

鉴于列表推导式本身内容的广度和难度以及在Python编程中的优越性,将在之后单独的博文中专门总结列表推导式有关内容

(四)切片
#格式:
lst[num1:num2:num3]-----------num1:起始位置(默认为0) ,num2:终止位置(默认列表长度,但不包含此位置),num3:步长(默认为1,当步长省略时同时可省略第二个冒号)

>>>lst=[3,4,5,6,7,8,9]
>>>lst[1::2]  #隔一个元素取一个元素,获取奇数位置的元素
[4,6,8]
>>>lst[3:6]  #指定切片的起始位置(前闭后开),当结束位置大于列表长度时从列表尾部截断
[6,7,8]

#使用方法:
切片适用于列表、元组、字符串、range对象等类型,可以用来截取列表中的任何一部分返回得到一个新的列表,也可以通过切片修改、删除、增加列表中部分元素。

>>>lst=[3,5,7]
>>>lst[len(lst):]=[9]  #在列表尾部增加元素
>>>lst
[3,5,7,9]
>>>lst[:3]=[1,2,3]     #替换列表元素
>>>lst
[1,2,3,9]
>>>lst[:3]=[]          #删除列表元素
>>>lst
[9]
>>>lst[0:0]=[1,3]      #在指定位置插入元素
>>>lst
[1,3,9]

二、元组(Tuple)与生成器推导式

(一)元组(tuple)
元组的所有元素放在一对圆括号“(…)”中,属于不可变序列,也是通过下标访问其中元素,不能修改、增加或删除其中元素;但支持切片来访问其中的元素(切片方法同上!)。
(二)生成器推导式

注:

生成器涉及更进一步的知识,在之后的补充博客或专题中再详细介绍

三、字典(Dict)

(一)字典(Dict)
字典是包含若干“键:值”元素的不可变序列,键和值两部分是一种映射或对应关系,两者一起组成字典的元素,以键为下标即可访问元素的值,元素之间用逗号分隔开,字典元素存放在一对大括号“{…}”中;字典的键不允许重复但值可以重复
(二)语法和函数
#字典的创建
1.赋值运算符“=”将字典赋给一个变量
2.内置函数dict()用已有数据快速创建字典

>>>key=['a','b','c']
>>>value=['you','me','him']
>>>D=dict(zip(key,value))  #zip()函数
>>>D
{'a':'you','b':'me','c':'him'}

3.内置函数dict()根据给定 键:值 来创建字典

>>>Dict_A=dict(name='xk',age=21)
>>>Dict_A
{'age':21,'name'='xk'}

#字典元素操作
1.指定“键”为下标对元素赋值时:若该“键”存在则修改对应元素值,若不存在则添加新的元素
2.update():将另一个字典的“键:值”一次性全部添加到当前字典,存在相同的键时以另一个字典的键值为准。
3.del命令可用于删除整个字典或字典中的元素
4.pop()和popitem()用于弹出并删除指定元素
5.clear()用于清空字典但保留字典对象
6.copy()用于返回字典对象的浅复制
7.get(‘键’,‘默认值’):若字典中存在指定的键则返回相应的值,若不存在则返回指定的默认值
8.setdefault(‘键’,‘指定值’):若字典中存在该键则返回相应的值,若不存在则将’键:指定值’作为一个新的元素添加到字典。
9.当对字典对象进行迭代时,默认是遍历字典的“键”,items()方法返回字典中的元素,keys()方法返回所有“键”,values()方法返回所有“值”。
10.内置函数len(),max(),min(),sum(),sorted()也适用于字典对象,但默认作用于字典的“键”,若想作用于字典的元素,可以用字典对象的items()指定。

四、集合(Set)

(一)集合:
集合是无序可变序列,元素之间用逗号隔开,使用一对大括号作为界定符,元素之间不允许重复。集合中只能包含数字、字符串、元组等不可变类型的数据,而不能包含列表、字典、集合等可变类型的数据。(Python中字典和集合都采用hash表来存储元素,查找速度非常快,所以关键字in作用于字典和集合时比列表要快得多)
(二)语法和函数:
#集合元素的增加和删除

方法 说明
add() 增加新元素,如果该元素已存在则忽略此操作
update() 合并另一个集合中的元素到当前集合中
pop() 随机删除并返回集合中的一个元素,集合为空时抛出异常
remove(x) 删除集合中的指定元素x(集合是无序序列,x不代表下标),元素不存在时抛出异常
discard(x) 用于从集合中删除一个特定的元素x,如果不存在x则忽略此操作
clear() 清空集合删除所有元素

#交集、并集、差集(a、b两变量代表两个集合)
a|b 并集
a.union(b) 并集
a&b 交集
a.intersection(b) 交集
a.difference(b) 差集
a.symmetric_difference(b) 对称差集

注1:

>,<,<=,>=作用于集合时表示集合之间的包含关系而不是集合中元素之间的大小关系。A<B不成立时不代表A>B就成立。
len()、max()、min()、sum()、sorted()以及成员测试运算符in也适用于集合

注2:

特别感谢清华大学董付国老师及其编著的《Python可以这样学》,本文灵感大部分均源于此。
侵删。转载请注明出处。

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
Alex landi 发布了20 篇原创文章 · 获赞 4 · 访问量 668 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐