2018-07-29

2018-07-29  本文已影响0人  淡水t海边

如何判断一个一个对象是可迭代对象?

-------使用cellections下的Iterable类型来验证:

from collections import Iterable

>>> isinstance('abc', Iterable) # str是否可迭代

True

>>> isinstance([1,2,3], Iterable) # list是否可迭代

True

>>> isinstance(123, Iterable) # 整数是否可迭代

False


要实现对list下标和元素的同时循环,采用enumerate函数就可以把list变成索引-元素对

这样可以在for循环中同时使用索引和元素对:

for i, value in enumerate(['A', 'B', 'C']):

...    print(i, value)

...

0 A

1 B

2 C

for x, y in [(1, 1), (2, 4), (3, 9)]:

...    print(x, y)

...

1 1

2 4

3 9


问题描述:使用迭代查找一个list中的最大值和最小值,并返回一个tuple

#-*-coding:utf-8-*-

... def findMinAndMax(L):

...    if len(L) > 0:

...        max = L[0]

...        min = L[0]

...        for i in L:

...            if i >= max:

...                max = i

...            elif i <= min:

...                min = i

...        return(min,max)

...    return(None,None)

...

>>> #测试

... if findMinAndMax([]) != (None,None):

...    print('测试失败!')

... elif findMinAndMax([7]) != (7,7):

...    print('测试失败!')

... elif findMinAndMax([7,1]) != (1,7):

...    print('测试失败!')

... elif findMinAndMax([7,1,3,9,5]) != (1,9):

...    print('测试失败!')

... else:

...    print('测试成功!')

...

测试成功!


列表生成式以及仅偶数d的平方的确定;

[x * x for x in range(1,11) if x % 2 == 0]

[4, 16, 36, 64, 100]


两层循环:

[m + n for m in 'ABC' for n in 'XYZ']


将list中所有字符串变为小写:

L = ['Hello','World','IBM','Apple']

>>> [s.lower() for s in L]

['hello', 'world', 'ibm', 'apple']


列表生成器使用两个变量来生成list:

d = {'x':'A','y':'B','z':'C'}

>>> [k + '=' + v for k,v in d.items()]


列表生成器代码总结:

#!/usr/bin/env python3

... #-*-coding:utf-8-*-

...

>>> print([x * x for x in range(1,11)])

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

>>> print([x * x for x in range(1,11) if x % 2 == 0])

[4, 16, 36, 64, 100]

>>> print([m + n for m in 'ABC' for n in 'XYZ'])

['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

>>>

>>> d = {'x':'A','y':'B','z':'C'}

>>> print([k + '=' + v for k,v in d.items()])

['x=A', 'y=B', 'z=C']

>>>

>>> L = ['Hello','World','IBM','Apple']

>>> print([s.lower() for s in L])

['hello', 'world', 'ibm', 'apple']

上一篇下一篇

猜你喜欢

热点阅读