Python中的序列

说明:本博文主要记录Python学习过程中的知识点(主要针对Python编程语法)。是我在看《零基础学Python》(明日科技出版)这本书时所做的笔记。

Python中序列是一块连续的内存空间。序列中的没有个值都有对应的索引值。Python中的序列主要有:列表、元组、字符串、集合和字典。

序列的通用操作

列表、元组、字符串、集合、字典有如下几种通用操作。其中集合和字典不支持索引、切片、相乘和相加操作。

  • 索引
  1. Python中序列的索引是从0开始的,即第一个元素的索引是0
  2. Python中序列的索引也可以是负数。序列中最后一个元素是-1,倒数第二个元素是-2,以此类推。
  3. 通过索引访问元素的示例如下
var = ["pthon", 1, 2, "hello", "我爱学习"]
print(var[-1])
print(var[2])
  • 切片
  1. 切片用于访问序列中一定范围的元素,切片可以生成一个新的序列。新序列的元素是从原序列中抽取出来的。
  2. 切片的语法格式如下
# sequence[start: end: step]
# (1)sequence表示序列的名称
# (2)start:切片的起始位置(包括该位置),如果没有指定则从0开始。
# (3)end:切片的结束位置(不包括该位置),不指定为序列的长度。
# (4)step:切片的步长,如果不指定则为1。
  • 序列相加
    两个序列相加,就是将两个序列中的元素拼接成一个序列。不会合并两个序列中相同的元素。
  1. 两个序列相加,两个序列要是相同类型。(即同为列表、元组等)
  • 乘法
  1. 序列乘法是指用一个数字乘以一个序列。
  2. 序列完成乘法后会产生一个新的序列。(例如:用n乘以数列,那么新序列的内容就是原序列重复n次)。
  • 判断某个元素是否在序列中
  1. 语法格式如下。如果元素在序列中,则表达式的值为True。
value in sequence
  • 序列的长度
    len()函数可以返回序列的长度。

  • 序列的最大值
    max()函数可以返回序列的最大值

  • 序列的最小值
    min()函数可以返回序列的最小值

  • 对序列操作的相关函数及其作用

函数作用
list()将序列转换为列表
str()将序列转换为字符串
sorted()对序列中的元素排序
sum()计算序列中的元素和
reversed()序列中的元素倒序
enumerate()将序列组合成一个索引序列
列表

列表中的元素放在一对中括号中“[]”,相邻两个元素之间用逗号隔开,列表中的元素可以是任何数据类型(整数、浮点数、字符串、列表、元组等)。

  • 列表的创建
  1. 直接给列表赋值
list_name=[element 1, element 2, element 3,..., element n]
  1. 创建一个空列表
list_name=[]
  1. 通过range()函数创建
list_name=list(range(start, end, step))
  • 删除列表
    由于Python中有自动垃圾回收机制,所以删除列表不经常用。
del list_name  # list_name为列表的名称
  • 列表元素的访问
    列表中的元素可以通过索引访问
list1 = [1, 2, 'Python']
print(list1[2])
  • 列表中的元素遍历
  1. 通过for循环遍历
for item in list_name:
	print(item)
  1. enumerate()函数结合for循环
for index, item in enumerate(list_name):
	print(index, item)
  • 添加元素
    前面介绍了可以通过加号“+”连接两个列表。下面继续介绍几种向列表中添加元素的方法。
  1. append()方法
list_name.append(obj) # 向列表的末尾追加元素
# list_name:原列表
# obj:需要添加的元素
  1. insert()方法
list_name.insert(index, obj) # 向列表的指定位置添加元素
# list_name:需要添加元素的列表
# obj:需要添加的元素
# index:元素添加的位置
  1. extend()方法
list_name.extend(list1) # 向一个列表中添加另外一个列表
# list_name:需要添加列表的列表
# list1:被添加的列表
  • 修改列表中的元素
    列表中的元素可以通过索引修改。

  • 删除列表中的元素

  1. 通过索引删除
list1 = [1,1,'a','b',3]
del list1[1]
  1. 通过remove()函数删除
    该方法是通过值删除的。
list1 = [1,1,'a','b',3]
list1.remove('a')
  • 列表推导式
  1. 通过range()函数生成指定元素个数的数值列表
list_name = [Expression for i in range(value)]
# list_name:通过列表推导式生成的新的列表
# Expression:用于生成列表中的元素的表达式
# i:循环变量

例程如下:

import random
list1 = [random.randint(0,9) for i in range(5)]
print("生成的列表为:",list1)
  1. 更具一个列表生成一个新的列表
new_list = [expression for i in old_list]
# new_list:新列表的名称
# 用于生成新列表中的元素的表达式
# old_list:老的列表

例程如下:

old_list = [1,2,3,4,5,6]
new_list = [2*i for i in old_list]
print("生成的列表为:",new_list)
  1. 从原列表中选择符合条件的元素组成新的列表
new_list = [expression for i in old_list if condition]
# # new_list:新列表的名称
# 用于生成新列表中的元素的表达式
# old_list:老的列表
# condition:条件表达式,用于筛选元素。

例程如下:

old_list = [1,2,3,4,5,6,7,8,9,10]
new_list = [i for i in old_list if i%2==0]
print("生成的列表为:",new_list)
二维列表
  • 二维列表的创建
  1. 直接创建
list_name = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]
# 创建了一个四行五列的二维列表
  1. 通过for循环创建
array = [] # 创建一个空列表
for i in range(5):
	array.append([]) # 在空列表中再创建一个空列表
	for j in range(6):
		array[i].append(j) # 向内层的空列表中追加元素
  1. 通过列表推导式创建
array = [[j for j in range(6)] for i in range(5)]
元组

元组也是一个序列,元组中的元素放在一对括号中“()”,相邻元素之间用逗号隔开。元组是不可变序列。通常情况下元组用于存放程序中不可变内容。
元组和列表的区别是:元组是不可变序列,列表是可变序列。元组中的元素不可单独修改,列表中的元素可以单独修改。

  • 元组的创建
  1. 直接赋值
tuple_name = (element 1, element 2, element 3,...,element n)
  1. 创建空元组
tuple_name = ()
  1. 通过range()函数创建数值元组
tuple(range(10,20,2))
  • 元组删除
    通过del可以删除元组
del tuple_name
  • 修改元组中的元素
    元组是不可变序列,不能单独对元组中的某一个元素或者某几个进行修改。但是可以整体修改(对元组进行重新赋值)。

  • 元组推导式

import random
random_number = (random.randint(0, 10) for i in range(5))
print(random_number)
# 输出结果为:<generator object <genexpr> at 0x0000000002080660>

使用元组推导式生成的结果并不是一个元组或者一个列表,而是一个生成对象。要想将生成器对象变成元组或列表需要使用tuple()函数或list()函数。

  1. 如果要使用生成器中的元素可以使用for循环遍历,代码如下:
import random
random_number = (random.randint(0, 10) for i in range(5))
for i in random_number:
    print(i)
元组和列表的区别
  • 列表属于可变序列,它的元素可以随时修改和删除;元组属于不可变序列,它的元素不能修改或者删除,除非整体替换。
  • 列表可以使用append()、extend()、insert()、remove()和pop()等方法修改、添加和删除元素。而元组没有这几种方法,所以不能向元组中添加、修改和删除元素。
  • 列表可以通过切片访问或者修改元素。而元组只能通过切片访问元素。
  • 元组比列表的访问和处理速度快,所以当只需要对其中的元素进行访问,而不进行任何修改时,建议使用元组。
  • 列表不能做字典的键,元组可以。
字典

字典是由“键”“值”对组成的,“键”和“值”之间由冒号隔开,相邻键值对之间由逗号隔开。

  • 字典的创建
  1. 直接赋值
dictionary_name = {'key1':'value1', 'key2':'value2', ...,'key n':'value n'}
# dictionary_name:字典的名称
# key1、key2、...、key n:字典的“键”,可以是数字、字符串、元组
# value1、value2、...、value n:表示元素的值,可以是任何数据类型。
  1. 创建空字典
方法一:dictionary_name = {}

方法二:dictionary_name = dict()
  1. 通过映射函数创建
dictionary_name = dict(zip(list1,list2))
# 表示字典名称
# 用于将多个列表或元组的对应位置组合成元组,组合成的序列是一个生成器。可以将生成器使用tuple()方法
# 转换为元组,使用list()方法转换为列表,使用dict()方法转换为字典
# list1:用于指定生成字典的键。
# list2:用于指定生成字典的值。
  1. 通过给定的键、值创建字典
dictionary_name = dict(key1=value1,key2=value2,...,keyn=valuen)
  1. 通过fromkeys()创建空值列表
dictionary_name = dict.fromkeys(list1)
# dictionary_name:表示字典的名称
# list1:用于生成字典键的列表
  • 字典的删除
del dictionary_name
dictionary_name.clear() # 删除字典中的所有元素
  • 字典的访问
  1. 通过“键”访问
dict1 = {'qq':123456,'电话':13156848963,1:2}
print(dict1['电话'])
  1. 通过get()方法访问
dictionary_name.get(key)
  • 遍历字典
    字典的items()方法可以获取字典的“键”、“值”对列表。
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]
a = dict(zip(list1, list2))
for item in a.items():
    print(item)
# 输出结果为:
"""
(1, 6)
(2, 7)
(3, 8)
(4, 9)
(5, 10)
"""
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]
a = dict(zip(list1, list2))
for key,value in a.items():
    print(key, value)
# 输出结果为:
"""
1 6
2 7
3 8
4 9
5 10
"""
  • 字典中添加、修改元素
    字典是可变序列,可以随时向字典中添加元素。
dictionary_name[key] = value
# 当字典中已经存在键"key",则会将原来的值修改为value
# 当字典中没有键“key”,则会在字典中新增一个键值对
  • 删除字典中的元素
del dictionary_name[key]
  • 字典推导式
import random
random_number = {i:random.randint(0, 10) for i in range(5)}
print(random_number)
集合

集合中的元素放在一对大括号“{}”中,相邻元素之间用逗号隔开。集合中的元素是唯一的(即集合中的元素不能相同)

  • 集合的创建
  1. 直接创建
set_name = {element 1, element 2, element 3, ...,element n}
# 在创建集合时,如果输入重复元素,Python会自动保存一个
  1. 使用set()函数创建
set_name = set(sequence)
# sequence:可以是列表、元组、等其他可迭代对象
# 如果出现重复元素则只保留一个
  • 集合的添加
  1. 使用add()方法添加
set_name.add(element)
# set_name:表示需要添加元素的集合
# element:添加到集合的元素。只能是数值、字符串、bool型中True或False,不能是列表、元组、字典等
  • 集合的交集
    集合交集运算的符号是“&”,两个集合求交集后返回的是连个集合相同的元素组成的新的集合。
set3 = set1 & set2
  • 集合的并集
    集合并集的运算符是“|”,两个集合求并集合返回的是两个集合所有元素组成的新的集合。如果两个集合中有相同的元素,则相同的元素只保留一个。
set3 = set1 | set2
  • 集合的差集
    集合差集的运算符是“-”,两个集合求差,返回的是第一个集合中去除第二个集合中的元素后剩下的元素。
set3 = set1 - set2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值