如何判断一个一个对象是可迭代对象?
-------使用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']
网友评论