【python学习笔记】序列

序列

序列包含列表、元组、字符串,它们有很多相同点:
① 都可以通过索引得到每一个元素
② 默认索引值总是从0开始
③ 可以通过分片的方法得到一个范围内的元素的集合
④ 有很多共同的操作符

下面介绍关于序列的常用的BIF

1.list([iterable]):将一个可迭代对象转换为列表

所谓的迭代就是重复反馈过程的活动,其目的通常是为了接近并达到所需的目标和结果,每一次对过程的重复被称为一次"迭代",而每一次迭代的到的结果会被用来做为下一次迭代的初始值,就目前而言,迭代还就是循环

>>> a = list()
>>> a
[]
>>> b = list("Hello")
>>> b
['H', 'e', 'l', 'l', 'o']
>>> c = list((1,2,3,4,5,8,13))
>>> c
[1, 2, 3, 4, 5, 8, 13]
>>> 

2.tuple([iterable]):将一个可迭代对象转换成元组

用法与list一样

3.str(obj):将obj对象转换成字符串

前面说过,不多说

4.len(sub):返回sub参数的长度

>>> str1 = "I love python"
>>> len(str1)
13
>>> list1 = [1,2,3,4,5,9,13]
>>> len(list1)
7
>>> tuple1 = "这","是","一","个","元","组"
>>> len(tuple1)
6
>>> 

5.max(...):用于返回序列或者参数集合中的最大值

>>> list1 = [1,9,15,100,66,88,99,51,54,-56,-12,33]
>>> max(list1)
100
>>> list1 = "I love python"
>>> max(list1)
'y'
>>> max(5,8,9,1,3,13,18,20,66,11)
66
>>> 

6.min(...):方法与max一样,效果相反,返回序列或参数集合中的最小值

注意的是使用max和min方法都要保证序列或参数集合中的数据类型统一,否则会出错

>>> list1 =[1,5,9,6,8]
>>> list1.append("x")
>>> max(list1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'str' and 'int'
>>> min(123,'oo',456,'xx')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
>>> 

推倒出min()方法的代码:

def min(x):
    least = x[0]
    for each in x:
        if each < least:
            least = each
    return least

max()方法的代码:

def max(x):
    maximum = x[0]
    for each in x:
        if each > maximum:
            maximum = each
    return maximum

7.sum(iterable[,start]):返回序列iterable的总和,用法与max和min一样

sum有可选参数start,如果设置该参数,表示从该值开始加起,默认值为0

>>> tuple1 = (1,9,5,6,8,1,3)
>>> sum(tuple1)
33
>>> sum(tuple1,10)
43
>>> 

8.sorted(iterable,key=None,reverse=False):返回一个排序的列表

sort()是实现列表原地排序,sorted()方法是返回一个排序的新列表

>>> list1 = [1,5,9,7,6,3,2,5,4,6]
>>> list2 = list1[:]
>>> list1.sort()
>>> list1
[1, 2, 3, 4, 5, 5, 6, 6, 7, 9]
>>> sorted(list2)
[1, 2, 3, 4, 5, 5, 6, 6, 7, 9]
>>> list2
[1, 5, 9, 7, 6, 3, 2, 5, 4, 6]
>>> 
9.reversed(sequence):用于返回逆向迭代序列的值

效果与列表的内置方法reverse()一致,区别是内建方法是原地反转,而reverse()返回一个翻转后的迭代对象

>>> list1 = [1,5,9,7,6,3,2,5,4,6]
>>> reversed(list1)
<list_reverseiterator object at 0x00000237A4004A90>
>>> for each in reversed(list1):
... 	print(each,end=',')
... 
6,4,5,2,3,6,7,9,5,1,>>> 
>>> list1 = (1,5,9,7,6,3,2,5,4,6)
>>> for each in reversed(list1):
... 	print(each)
... 
6
4
5
2
3
6
7
9
5
1
>>> str1 = "Hello World"
>>> for each in reversed(str1):
... 	print(each)
... 
d
l
r
o
W
 
o
l
l
e
H

10.enumerate(iterable):生成有二元组(二元组就就是元素数量为2的元组)构成的迭代对象,每一个二元组有可迭代参数的索引号以及对应元素组成的

>>> str1 = "Hello"
>>> enumerate(str1)
<enumerate object at 0x00000237A4001A68>
>>> for each in enumerate(str1):
... 	print(each)
... 
(0, 'H')
(1, 'e')
(2, 'l')
(3, 'l')
(4, 'o')
>>> list1 = [1,3,5,6,7]
>>> for each in enumerate(list1):
... 	print(each)
... 
(0, 1)
(1, 3)
(2, 5)
(3, 6)
(4, 7)
>>> tuple1 = (2,6,8,9,10)
>>> for each in enumerate(tuple1):
... 	print(each)
... 
(0, 2)
(1, 6)
(2, 8)
(3, 9)
(4, 10)
>>> 

11.zip(iter1[,iter2[...]]):用于返回由各个可迭代参数共同组成的元组
>>> list1 = [1,5,9,7,6,3,2,5,4,6]
>>> list1 = [1,3,5,6,7]
>>> str1 = "Hello"
>>> for each in zip(list1,str1):
... 	print(each)
... 
(1, 'H')
(3, 'e')
(5, 'l')
(6, 'l')
(7, 'o')
>>> 
>>> tuple1 = (2,6,8,9,10)
>>> for each in zip(list1,str1,tuple1):
... 	print(each)
... 
(1, 'H', 2)
(3, 'e', 6)
(5, 'l', 8)
(6, 'l', 9)
(7, 'o', 10)
>>> 
 
 

作业题:

1.请问使用什么BIF,可以将一个可迭代对象转换为列表,元组,字符串?

list([iterable]):将一个可迭代对象转换成列表

tuple([iterable]):将一个可迭代对象转换成列表

str(obj):将一个对象转换成字符串

2.迭代的概念

所谓的迭代就是重复反馈过程的活动,其目的通常是为了接近并达到所需的目标和结果,每一次对过程的重复被称为一次"迭代",而每一次迭代的到的结果会被用来做为下一次迭代的初始值。

3.你认为max("I love python"),将会返回什么?

会返回‘y’,因为字符串在计算机中是以ASCII码的形式存储,参数中y对应的ASCII值最大

4.猜想一下min()这个BIF实现的方式

def min(x):
    least = x[0]
    for each in x:
        if each < least:
            least = each
    return least

5.sum()参数中如果存在字符串会报错,请无视字符串自动返回结果

def sum(x):
    result = 0
    for each in x:
        if (type(each)==int) or (type(each)==float):
	    result += each
	else:
	    continue
    return result

猜你喜欢

转载自blog.csdn.net/mr_humi/article/details/80793162