Python中的序列(列表,元组,字典,集合)

  • 序列是一块用于存放多个值的连续内存空间,并且按照一定顺序排列,每个值(称为元素)都分配一个数字,称为索引或者位置。

一、序列的一些通用操作

  • 在Python中,序列结构主要有列表、元组、集合、字典和字符串,对于这些序列结构有以下几个通用操作。其中集合和字典不支持索引、切片相加和相乘操作。

1、索引

  • 序列中的每个元素都有一个编号,也称为索引。这个索引是从左到右从0开始递增的。
  • Python比较神奇,它的索引可以是负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是 -1,倒数第二个元素的索引值为 -2,以此类推。
    • 在采用负数作为索引值时,是从-1开始的,而不是从0开始的,即最后一个元素的下标为-1,这是为了防止与第一个元素重复。

2、切片

  • 切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素。通过切片操作可以生产一个新的序列。

    sname[start : end : step]
    # sname:表示序列的名称。
    # start:表示切片的开始位置(包括该位置),如果不指定,则默认为0。
    # end:表示切片的截止位置(不包括该位置),如果不指定,则默认为序列的长度。
    # step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。
    
    • 在进行切片操作时,如果指定了步长,那么将按照该步长遍历序列的元素,否则将一个一个遍历序列。
    • 如果想要复制整个序列,可以将 start 和 end 参数都省略,但是中间的冒号需要保留。即 sname[:]。

3、序列相加

  • 在Python中,支持两种相同类型的序列相加操作,即将两个序列进行拼接,不会去除重复的元素,使用(+)运算符实现。
  • 在进行序列相加时,相同类型的序列是指同为列表、元组、集合等,序列中的元素类型可以不同。

4、序列乘法

  • 在Python中,使用数字n乘以一个序列会生产一个新的序列。新序列的内容为原来序列被重复n次的结果。
  • 在进行序列的乘法运算时,还可以实现初始化指定长度列表的功能。如,emptyList = [None]*5

5、序列中常用的函数

函数作用
in关键字检查某个元素是否包含在某个序列中
len()计算序列的长度
max()返回序列中的最大元素
min()返回序列中的最小元素
list()将序列转化为列表
tuple()将序列转化为元组
set()将列表、元组等可迭代对象转换为集合
str()将序列转化为字符串
sum()计算序列元素的和
sorted对元素进行排序
reversed()反向序列中的元素
enumerate()将序列组合为一个索引序列,多用在 for 循环中
type()测试变量的类型

二、列表(List)

  • 在形式上,列表的所有元素都放在一对中括号”[]“中,两个相邻元素间使用”,“分隔。
  • 在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到列表中,并且同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。
    • 使用列表时,虽然可以将不同数据类型的数据放入同一个列表中,但是通常情况下,我们不会这样做,而是在一个列表中只放入一种类型的数据。这样可以提高程序的可读性。

1、遍历列表

for item in listname:
	# 输出item
# 或者
for index, item in enumerate(listname):
	# 输出index和item

2、列表的常用函数

函数功能
append()在列表的末尾追加元素
insert()向列表的指定位置插入元素
extend()将一个列表中的全部元素添加到另一个列表中
remove()根据元素值删除列表中的元素,首先判断该元素是否存在
count()获取指定元素出现的次数
index()获取指定元素首次出现的下标
  • 对列表进行排序
    • 列表对象提供了sort()方法用于对原列表中的元素进行排序。排序后原列表中的元素顺序将发生改变。
    listname.sort(key=None, reverse=False)
    sorted(iterable, key=None, reverse=False)
    # listname和iterable:表示要进行排序的列表
    # key:用于指定排序规则(例如,设置 key=str.lower,表示在排序时不区分字母大小写)
    # reverse:可选参数,如果将其值设置为 True,则表示降序排列;如果为 False,则表示升序排列,默认为升序排列。
    
    • 列表对象的sort()方法和内置sorted()函数的作用基本相同;不同点是在使用sort()方法时,会改变原列表排列顺序,而使用sorted()函数时,会建立一个原列表的副本,该副本为排序后的列表。

3、列表推导式

  • (1)生产指定范围的数值列表

    list = [Expression for var in range]
    # Expression:表达式,用于计算新列表的元素
    # var:循环变量
    # range:采用range()函数生产的range对象。
    
  • (2)根据列表生产指定需求的列表

    newlist = [Expression for var in list]
    # Expression:表达式,用于计算新列表的元素
    # var:变量,值为后面列表的每个元素值
    # list:用于生产新列表的原列表
    # condition:条件表达式,用于指定筛选条件	
    

三、元组(tuple)

  • 在形式上,元组的所有元素都放在一对"()“中,两个相邻元素之间使用”,"分隔。
  • 在内容上,可以将任何类型的内容放入到元组中,并且在同一个元组中,元素的类型可以不同,因为它们之间没有任何关系。通常情况下元组用于保存程序中不可修改的内容。
  • 从元组和列表的定义上看,这两种结构比较相似,二者之间的主要区别为:元组时不可变序列,列表是可变序列。即元组中的元素不可以单独修改,而列表则可以任意修改。(不能向元组中添加、删除和修改元素)
  • 在Python中,使用一对小括号将所有的元素括起来,但是小括号并不是必须的,只要将一组值用逗号分隔开来,Python就可以视其为元组。例如 tuple1 = 12, 13, 16
  • 如果要创建的元组只包括一个元素,则需要在定义元组时,在元素的后面加上一个逗号”,“。例如,verse1 = 12,
  • 使用元组推导式可以快速生产一个元组,它的表现形式和列表推导式类似,只是将列表推导式中的"[]“修改为”()"。

四、字典(dictionary)

  • 字典与列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容是以“key-value”对的形式存放的。key是唯一的,而值可以有多个。字典在定义一个包含多个名字字段的对象时,很有用。
  • 字典的主要特征如下:
    • 通过key而不是通过索引来读取。
      • 字典有时也被称为关联数组或者散列表(hash)。它是通过key将一系列的值联系起来的,这样就可以通过key从字典中获取指定项,但不能通过索引来获取。
    • 字典是任意对象的无序集合。
      • 字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找效率。
    • 字典是可变的,并且可以任意嵌套。
    • 字典中的key是唯一的。
      • 不允许同一个key出现两次,如果出现两次,则后一个value会被记住。
    • 字典中的key必须不可变。
      • 字典中的key是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。
  • Python中的字典相当于Java或者C++中的Map对象。

1、字典的创建

# 创建一个空的字典
dictionary = {}
# 或者
dictionary = dict()
dictionary = dict(zip(list1, list2))
dictionary = dict(key1=value1, key2=value2, ..., key3=value3)
# Python还可以用dict对象的fromkeys()方法创建值为空的字典
dictionary =dict.fromkeys(list_name)
  • zip()函数:用于将多个列表或者元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想要获取元组,可以将zip对象使用tuple()函数转化为元组;如果想要获取列表,则可以使用list()函数将其转换为列表。

2、遍历字典

  • 使用字典对象的 item() 方法可以获取字典的可遍历的(key-value)的元组列表:
for item in dictionary.items():
	print item
for key, value in dictionary.items():
	print("{}-{}".format(key, value))
  • 在Python中,字典对象还提供了values()方法和keys()方法,用于返回字典的 “值” 和 “键” 列表,它们的使用方法同 items() 方法类似,也需要通过 for 循环遍历该字典列表,获取对应的值和键。

3、字典推导式

randomdict = {i:random.randint(10, 100) for i in range(1, 5)}

五、集合(set,无序可变集合)

  • 在形式上,集合的所有元素都放在一对"{}“中,两个相邻元素之间使用”,"分隔。集合最好的应用就是去除重复元素,因为集合中的每个元素都是唯一的。
    • 在创建集合时,如果输入了重复的元素,Python会自动只保留一个。
    • 由于Python中的set集合时无序的,所以每次输出时元素的排列顺序可能都不相同。
    • 在创建空集合时,只能使用函数set()实现,而不能使用一对"{}“实现,这是因为python中直接使用一对”{}"表示创建一个字典。

1、set的常用函数

函数功能
add()向集合中添加一个元素
pop()随机移除一个元素
remove()移除一个指定的元素,如果元素不存在抛出异常
clear()清空集合

2、 集合的交集、并集和差集运算

  • 集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用 “&” 符号,进行并集运算时使用 “|” 符号,进行差集运算时使用 “-” 符号,进行对称差运算时使用 “^” 符号。

六、list、tuple、dictionary、set的区别

数据结构是否可变是否重复是否有序定义符号
list可变可重复有序[]
tuple不可变可重复有序{}
dictionary可变可重复无序{key:value}
set可变不可重复无序{}

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python编程语言,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引的集合,其没有重复的成员。而集合是一种无序和无索引的集合,没有重复的成员。这四种集合数据类型在Python都有着不同的特点和用途。 在Python列表元组和字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其的元素是以键值对的形式存在的。集合则不属于序列或映射的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合元组是有序且不可更改的集合字典是无序、可变且有索引的集合集合是无序和无索引的集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表元组集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宝945

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值