列表4:拼接排序方法实操

本文介绍了Python列表的几个关键操作:append用于在列表末尾添加元素;extend和+=用于合并列表;insert在指定位置插入元素;sort进行原地排序,支持自定义key和reverse参数;reverse则用于原地反转列表。注意,不同类型元素排序时需要保持可比性,且列表元素不会内部反转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

s.append(x)

s.extend(t)、s += t、s *= n

s.insert(i,x)

s.sort(key=None, reverse=False)

s.reverse()


s.append(x)

将x添加到s列表的最末尾,可以添加整型、字符型、列表。

注意,添加的列表不是合并,而是做为整体成为列表的一个元素。

list1 = [0,1,2]
#添加整型
list1.append(3)
print(list1)
[0, 1, 2, 3]
#添加字符型
list1.append('3')
print(list1)
[0, 1, 2, 3, '3']
#添加列表
list1.append([4,5,6])
print(list1)
[0, 1, 2, 3, '3', [4, 5, 6]]
#添加浮点数
list1.append(1.234)
print(list1)
[0, 1, 2, 3, '3', [4, 5, 6], 1.234]

s.extend(t)、s += t、s *= n

s.extend(t)和s += t等价,将可迭代对象t(iterable)中的每个元素依次添加到s列表的末尾。【注意,此处当t不是列表(譬如为字符串)时,s += t,不可写成s = s + t

还可以用s[len(s):] = t来实现添加效果。

列表、字符串为可迭代对象,整数则不可直接使用.extend()或者+=。

s *= n等价于n次s + s,即列表s重复叠加自身n次

list1 = [0,1,2]
list2 = ['3',4,[5,1],1.2]
list3 = []
strdata = 'abc1231.2'
#添加整型数,整型数非可迭代对象,添加失败
list1.extend(1)
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    list1.extend(1)
TypeError: 'int' object is not iterable
#添加浮点数,浮点数非可迭代对象,添加失败
list1.extend(1.2)
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    list1.extend(1.2)
TypeError: 'float' object is not iterable
#添加字符串,字符串分解为单个字符,依次添加
list1.extend('11')
print(list1)
[0, 1, 2, '1', '1']
#合并列表list2,list2中的字符、整型、列表、浮点数依次添加到list1
list1.extend(list2)
print(list1)
[0, 1, 2, '1', '1', '3', 4, [5, 1], 1.2]
#合并列表list3,list3为空表格,list1合并后无变化
list1.extend(list3)
print(list1)
[0, 1, 2, '1', '1', '3', 4, [5, 1], 1.2]
#合并赋值为字符串的变量,和直接合并字符串无区别
list1.extend(strdata)
print(list1)
[0, 1, 2, '1', '1', '3', 4, [5, 1], 1.2, 'a', 'b', 'c', '1', '2', '3', '1', '.', '2']

# s += t效果和s.extend(t)一致
list1 = [0,1,2]
list1 += 1
Traceback (most recent call last):
  File "<pyshell#204>", line 1, in <module>
    list1 += 1
TypeError: 'int' object is not iterable
list1 += '1abc'
print(list1)
[0, 1, 2, '1', 'a', 'b', 'c']
list1 += [3,2,'A']
print(list1)
[0, 1, 2, '1', 'a', 'b', 'c', 3, 2, 'A']

#list1叠加2次
list1 = [1,2,3]
list1 *= 2
print(list1)
[1, 2, 3, 1, 2, 3]

s.insert(i,x)

将 x 元素插入到 s 列表中的 i 位置(其它元素依次往后递推),可以添加整型、字符型、列表。

位置i可以大于当前列表的元素数量,此时x添加到s的最末尾。

位置i可以为负数,此时x添加到从后往前的第abs(i)个数之前。

list1 = [0,1,2]
#将'A'添加到list1的位置0,即添加到list1的开头
list1.insert(0,'A')
print(list1)
['A', 0, 1, 2]
#将'B'添加到list1的位置len(list1),即添加到list1的第len(list1) + 1位,即添加到list1的末尾
list1.insert(len(list1),'B')
print(list1)
['A', 0, 1, 2, 'B']
#将列表[1,2,3]添加到list1的位置2,即列表[1,2,3]作为一个元素,整体添加到list1的第3个位置
list1.insert(2,[1,2,3])
print(list1)
['A', 0, [1, 2, 3], 1, 2, 'B']
#将整数1添加到list1的位置4
list1.insert(4,1)
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 'B']
#将整数1添加到list1的位置-1,也即添加到从后往前的第1+1个位置
list1.insert(-1,1)
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 1, 'B']
#将整数1添加到list1的位置100,100超过当前list1元素数量,也即添加list1末尾
list1.insert(100,1)
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 1, 'B', 1]
#将'X'添加到list1的位置50,仍为添加到list1末尾
#上一步的整数1可见并不真的在位置100,而确实在list1末尾位置8
list1.insert(50,'X')
print(list1)
['A', 0, [1, 2, 3], 1, 1, 2, 1, 'B', 1, 'X']

s.sort(key=None, reverse=False)

对列表中的元素进行原地排序(key 参数指定一个用于比较的函数;reverse 参数用于指定排序结果是否反转)。当'key=None, reverse=False'时,可以直接使用s.sort()即表示key和reverse为默认值None、False;

列表中元素类型需要为同一类型(整数和浮点数可视为一类)可比较的元素,譬如都是整数或浮点数、都是字符、都是列表,否则报错;

整数、浮点数按数值大小排序;

字符按字符Unicode值排序;

列表、元组、字符串的各元素按索引0、索引1、索引2依次比较排序,每次比较的轮次中出现不可比较类型元素,则报错;未到该元素时,元素大小已排序完成,则该元素类型不限;

key可以使用其他函数作为排序依据,譬如len()函数,使用时无需附带();

reverse为True时,倒序排列。

#列表中同时有整数、字符串,无法排序,报错
list1 = [3,'1']
list1.sort(key = None,reverse = False)
Traceback (most recent call last):
  File "<pyshell#136>", line 1, in <module>
    list1.sort(key = None,reverse = False)
TypeError: '<' not supported between instances of 'str' and 'int'
#列表中同时有整数、列表,无法排序,报错
list1 = [3,[1]]
list1.sort(key = None,reverse = False)
Traceback (most recent call last):
  File "<pyshell#139>", line 1, in <module>
    list1.sort(key = None,reverse = False)
TypeError: '<' not supported between instances of 'list' and 'int'

#列表中同时有整数、浮点数,可以排序
list1 = [7.2,2133,5.51234,0,183,7,55]
list1.sort()
print(list1)
[0, 5.51234, 7, 7.2, 55, 183, 2133]

#reverse为True时,倒序排列
list1.sort(key = None,reverse = True)
print(list1)
[2133, 183, 55, 7.2, 7, 5.51234, 0]

#字符串按字符Unicode值写排序
list1 = ['0.00','@','3','-7.1','512','。','-Z5','17','3xe','.','-12','0.5','a23']
list1.sort()
print(list1)
['-12', '-7.1', '-Z5', '.', '0.00', '0.5', '17', '3', '3xe', '512', '@', 'a23', '。'

#列表、元组、字符串的各元素按索引0、索引1、索引2依次比较排序,每次比较的轮次中出现不可比较类型元素,则报错;未到该元素时,元素大小已排序完成,则该元素类型不限。
list1 = [[5,32,8],[11],[0.11,1,111],[25,3]]
list1.sort()
print(list1)
[[0.11, 1, 111], [5, 32, 8], [11], [25, 3]]
x = [[1,0,2],[1,1],[1,0,2,1]]
x.sort()
x
[[1, 0, 2], [1, 0, 2, 1], [1, 1]]

list1 = [[11],['0']]
list1.sort(key = None,reverse = False)
Traceback (most recent call last):
  File "<pyshell#161>", line 1, in <module>
    list1.sort(key = None,reverse = False)
TypeError: '<' not supported between instances of 'str' and 'int'

list1 = [['5',32,8],['11'],['0.11','1',111],['25',3]]
list1.sort()
print(list1)
[['0.11', '1', 111], ['11'], ['25', 3], ['5', 32, 8]]

#key可以使用其他函数作为排序依据,譬如len()函数,使用时无需附带()。
list1 = ['ab','efg','1','$$$$$$','']
list1.sort(key=len)
list1
['', '1', 'ab', 'efg', '$$$$$$']

s.reverse()

原地反转列表中的元素(第一个与最后一个互换,第二个与倒数第二个互换,第三个与倒数第三个互换,...)。

s.reverse()等价于s.sort(reverse=True)。

元素为列表时,列表元素内部不反转。

#元素位置反转
list1 = [0,1,0,1.0,'1',0,'11',0,[1]]
list1.reverse()
print(list1)
[[1], 0, '11', 0, '1', 1.0, 0, 1, 0]
#元素为列表时,列表元素内部不反转
list1 = [['5',32,8],['11'],['0.11','1',111],['25',3]]
list1.reverse()
print(list1)
[['25', 3], ['0.11', '1', 111], ['11'], ['5', 32, 8]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

燃烧的火鸟啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值