操作序列的重要函数

1.sorted()函数

其与sort函数类似,是对序列进行排序的函数,以下是函数用法及函数的参数:

t = ["Cookie", "Watermelon", "Apple", "Cloud", "Book", "Banana"]

print(sorted(t))
print(t)
##  ['Apple', 'Banana', 'Book', 'Cloud', 'Cookie', 'Watermelon']
##  ['Cookie', 'Watermelon', 'Apple', 'Cloud', 'Book', 'Banana']
# 创建一个新的排序列表,原列表不发生改变

print(sorted(t, reverse=True))
##  ['Watermelon', 'Cookie', 'Cloud', 'Book', 'Banana', 'Apple']
# 支持reverse参数,即倒序

print(sorted(t, key=len))
##  ['Book', 'Apple', 'Cloud', 'Cookie', 'Banana', 'Watermelon']
# key参数,等号后面传入的是函数名,即按相应的函数输出值进行排序

#另外,sorted函数还可以将其他序列进行排序,如:
print(sorted("Cloud"))
print(sorted((1, 3, 0, 7, 0)))
##  ['C', 'd', 'l', 'o', 'u']
##  [0, 0, 1, 3, 7]
#其返回值均是列表形式

2.enumerate()函数

其用于返回一个枚举对象,它的功能就是将可迭代对象中的每个元素及从0开始的序号共同构成一个二元组的列表。示例如下:

t = ["Cookie", "Watermelon", "Apple", "Cloud", "Book", "Banana"]

print(list(enumerate(t)))
## [(0, 'Cookie'), (1, 'Watermelon'), (2, 'Apple'), (3, 'Cloud'), (4, 'Book'), (5, 'Banana')]
# t = ["Cookie", "Watermelon", "Apple", "Cloud", "Book", "Banana"]

3.zip()函数

其作用为

创建一个聚合多个可迭代对象的迭代器。它会将作为参数传入的每个可迭代对象的每个元素以此组合成元组,即第i个元组包含来自每个参数的第i个元素。

看似难懂,不妨先看以下示例:

x = [1, 2, 3]
y = [4, 5 ,6]
z = [7, 8 ,9]
print(list(zip(x, y, z)))
## [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

#若传入的可迭代对象的长度不一致,则以长度最短为基准
z = "Cloud"
print(list(zip(x, y, z))
##  [(1, 4, 'C'), (2, 5, 'l'), (3, 6, 'o')]

#如要解决上述问题,则可导入itertools模块,调用其中的zip_longest()函数
import itertools
zipped = itertools.zip_longest(x, y, z)
print(list(zipped))
##  [(1, 4, 'C'), (2, 5, 'l'), (3, 6, 'o'), (None, None, 'u'), (None, None, 'd')]

4.map()函数

该函数会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器。

string = "ILoveCloud"

print(list(map(ord, string)))
## [73, 76, 111, 118, 101, 67, 108, 111, 117, 100]
#其中第一个参数即所要调用的参数,ord将对应字符转化为相应的ascii编码,第二个参数为需操作的序列

#再如多参数函数:
print(list(map(pow, [2, 3, 10], [5, 2, 3])))
## [32, 9, 1000]

5.filter()函数

根据提供的函数对指定的可迭代对象的每一个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回,如:

string = "ILoveCloud"

print(list(filter(str.isupper, string)))
## ['I', 'L', 'C']
#str.isupper函数用于检测字符是否为大写,并返回true,filter接收true并返回相应的迭代器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值