1.得到a和b两个数的最大值
solution:
c = [b,a][a>b]
测试:
>>> a=1
>>> b=2
>>> c=[b,a][a>b]
>>> c
2
2.假设现在给定了一个list:
a = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
问如何将其转化成:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
其实就是将所有数据都拿出来组成一个1*n的list。
solution 1: 使用列表表达式
>>> a = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
>>> [i for k in a for i in k]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
solution 2: 使用itertools的chain函数
>>> a = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
>>> import itertools
>>> list(itertools.chain(*a))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
solution 3: 使用functools的reduce函数
>>> a = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
>>>from functools import reduce
>>> reduce(lambda x,y:x+y,a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
关于reduce函数,可参考:
Python中的reduce
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:
def myadd(x,y):
return x+y
sum=reduce(myadd,(1,2,3,4,5,6,7))
print sum </