Loading...
墨滴

瀋凣

2021/12/23  阅读:51  主题:极简黑

python笔记28

Python day28

1. 序列

1.2 序列相关函数

1.2.1 列表、元组和字符串相互转换

语法
list(seq)
tuple(seq)
str(seq)
#seq -- 要转换的可迭代对象。
举个栗子:
  • 字符串、元组转列表
>>> list("Vanovel")
['V''a''n''o''v''e''l']
>>> list((1,2,3,4,5))
[12345]
  • 字符串、列表转元组
>>> tuple("Python")
('P''y''t''h''o''n')
>>> tuple([1,2,3,4,5])
(12345)
  • 列表、元组转字符串
>>> str([12345])
'[1, 2, 3, 4, 5]'
>>> str((12345))
'(1, 2, 3, 4, 5)'

1.2.2 min()max()

max()/min() 方法返回给定参数的最大值/最小值,参数可以为序列。

语法
max(iterable,*[,key,default])
max(arg1,arg2,*args[,key])

min(iterable,*[,key,default])
min(arg1,arg2,*args[,key])
举个栗子:

第一种写法:

>>> l = [1,1,2,3,5,8]
>>> min(l)
1
>>> s = "Vanovel"
>>> max(s)
'v'
#比较每个字符的编码值,即按照字典顺序;并且大写字母编码顺序在小写字母之前。
  • 当可迭代对象为空时,就会报错:
>>> l = []
>>> min(l)
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
ValueError: min() arg is an empty sequence
  • 此时,可以通过设置default参数缓和一下尴尬的局面:
>>> min(l, default="屁,啥都没有,怎么找到最小?")
'屁,啥都没有,怎么找到最小?'

第二种写法:

>>> min(1,2,3,0,6)
0
>>> max(1,2,3,0,6)
6

1.2.3 len()sum()

Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。
Python sum() 方法对序列进行求和计算。

语法
sum(iterable[, start])
#iterable -- 可迭代对象,如:列表、元组、集合。
#start -- 指定相加的参数,如果没有设置这个值,默认为0。
举个栗子:
  • len()函数:
>>> len(range(2**100))
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
OverflowError: Python int too large to convert to C ssize_t

len()函数的参数太大导致报错。Python为了执行的效率其内部几乎都是用效率更高的C语言来实现的。而这个len()函数为了让Python自带的数据结构可以走后门,他不会直接去计算,而是直接读取C语言结构体里面的对象的长度。所以,如果检测的对象超过了某个数值,就会报错。
通常对于32位平台来说这个最大值是2的31次方-1,而对于64位平台来说,这个最大值的数值是2的63次方-1

  • sum()函数:
>>> s  = [1,0,0,8,6]
>>> sum(s)
15
#带上start参数进行尝试:
>>> sum(s,start = 100)
115

1.2.4 sorted()reversed()

sorted() 函数对所有可迭代的对象进行排序操作。

是不是很眼熟?因为我们在学习列表的时候有学过sort()方法。戳👇链接复习。

Python笔记15
Python笔记15

* sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

listsort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

语法
sorted(iterable, key=None, reverse=False)  
#iterable -- 可迭代对象。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
举个栗子:
  • 内置函数sorted()list.sort()方法对比:
>>> s = [1,2,3,0,6]
>>> sorted(s)
[01236]
#这是一个新列表,原列表不受影响:
>>> s
[12306]
>>> s.sort()
>>> s
[01236]
  • 加上参数:
>>> sorted(s, reverse = True)
[63210]
>>> t = ['Google','Apple','Meta','Twitter','Amazon']
>>> sorted(t)
['Amazon''Apple''Google''Meta''Twitter']
#按照字典顺序。
>>> sorted(t, key = len)
['Meta''Apple''Google''Amazon''Twitter']
#'Google'在'Amazon'前面是因为原列表'Google'在前。
>>> t.sort(key = len)
>>> t
['Meta''Apple''Google''Amazon''Twitter']

另一个区别在于list.sort()方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable

>>> sorted("Vanovel")
['V''a''e''l''n''o''v']
#返回值是list类型
>>> sorted((10086))
[00168]

reversed() 函数返回一个反转的迭代器。

同样,我们在15课的时候也学习了list.reverse()方法,戳👇链接复习。

Python笔记15
Python笔记15
语法
reversed(seq)
#seq -- 要转换的序列,可以是 tuple, string, list 或 range。
举个栗子:
>>> s = [1,2,5,8,0]
>>> reversed(s)
<list_reverseiterator object at 0x0000013836D49B80>

翻车了?我们再来看一下reversed()的概念:返回一个反转的迭代器

迭代器是个什么东西?

迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter()next()

>>> import sys
>>> while True:
        try:
          print(next(it))
       except StopIteration:
          sys.exit()

  
0
8
5
2
1

我们可以暂时将迭代器理解为一个可迭代对象。

#将迭代器转换为list:
>>> list(reversed(s))
[08521]
>>> s.reverse()
>>> s
[08521]

同样,reversed()适用于任何可迭代对象:

#字符串
>>> list(reversed('vanovel'))
['l''e''v''o''n''a''v']
#元组
>>> list(reversed((1,2,3,4,5,6,7)))
[7654321]
#range()函数
>>> >>> list(reversed(range(10,0,-2)))
[246810]
点点关注不迷路
点点关注不迷路
- END -

瀋凣

2021/12/23  阅读:51  主题:极简黑

作者介绍

瀋凣