列表,元组和字符串的共同点:
可以通过索引得到每一个元素;
索引值总是从0开始;
通过分并的方法得到一个范围内的元素的集合;
有共同的操作符(重复操作符,拼接操作符等)
几个常见的BIF:
list()把一个可迭代对象转换为列表
tuple()把一个可迭代对象转换元组
str()把一个可迭代对象转换字符串
len()返回长度
例如:
a = 'I love python'
a = list(a)
a
['I', ' ', 'l', 'o', 'v', 'e', ' ', 'p', 'y', 't', 'h', 'o', 'n']
len(a)
13
max()返回序列参数最大值,参数也可以为数组
min与其相反
max(1,2,3,4,5)
5
max(a)
'y'
前提必须为同一类型
>>> a.append(a)
>>> a
['I', ' ', 'l', 'o', 'v', 'e', ' ', 'p', 'y', 't', 'h', 'o', 'n', [...]]
>>> min(a)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
min(a)
TypeError: '<' not supported between instances of 'list' and 'str'
sum()返回序列和可选参数的总和
>>> c=(3.1,3.2,3.3)
>>> sum(c)
9.600000000000001
>>> sum(c,8)
17.6
sorted()从小到大排序
reversed() 返回迭代器内容
>>> a = 'I love python'
>>> a = list(a)
>>> reversed(a)
<list_reverseiterator object at 0x000002973628B3C8>
>>> list(reversed(a))
['n', 'o', 'h', 't', 'y', 'p', ' ', 'e', 'v', 'o', 'l', ' ', 'I']
enumerate()返回一个对象,举例子展示
>>> enumerate(a)
<enumerate object at 0x0000029736361AB0>
>>> list(enumerate(a))
[(0, 'I'), (1, ' '), (2, 'l'), (3, 'o'), (4, 'v'), (5, 'e'), (6, ' '), (7, 'p'), (8, 'y'), (9, 't'), (10, 'h'), (11, 'o'), (12, 'n')]
Zip
>>> a = [1,2,3,4,5,6,7,8]
>>> b = [4,5,6,7,8]
>>> zip(a,b)
<zip object at 0x0000029736356588>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]
课后题
1.根据列表,元组和字符串的共同特点,把三者统称为什么?
2.使用什么BIF,可以把一个可迭代对象转换为列表,元组和字符串?
3.如何理解“迭代”的概念?
4.max(“i love python”)会返回什么值?为什么?
5.猜想一下 min() 这个BIF的实现过程
6.sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果
解:
1.统称为序列,有以下共同点:
都可以通过索引得到每一个元素
默认索引值总是从0开始(当然灵活的Python还支持负数索引)
可以通过分片的方法得到一个范围内的元素的集合
有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
2.list([iterable]) 把可迭代对象转换为列表
tuple([iterable]) 把可迭代对象转换为元组
str(obj) 把对象转换为字符串
3.所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
4.返回‘y’,ASCII的原因
def min(x):
least = x[0]
for each in x:
if each < least:
least = each
return least
print(min('123456789'))
def sum(x):
result = 0
for each in x:
if (type(each) == int) or (type(each) == float):
result += each
else:
continue
return result
print(sum([1, 2.1, 2.3, 'a', '1', True]))