1、并发和并行
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也 不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持 并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持 并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
并行的关键是你有同时处理多个任务的能力。
并发和并行的关键点在于同时。
2、map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,
得到一个新的 list 并返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
def f(x):
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
3、
upper() 方法将字符串中的小写字母转为大写字母
str.upper()
str.upper()
lower() 将字符串中的大写转小写
4、python 匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
在Python中,对匿名函数提供了有限支持。还是以map()函数为例,除了定义一个f(x)的函数外,还可以直接传入匿名函数:
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
通过对比可以看出,匿名函数lambda x: x * x实际上就是:
def f(x):
return x * x
return x * x
关键字lambda表示匿名函数,冒号前面的x表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return,返回 值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。
此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
f = lambda x: x * x
f
<function <lambda> at 0x10453d7d0>
f(5)
f = lambda x: x * x
f
<function <lambda> at 0x10453d7d0>
f(5)
25
同样,也可以把匿名函数作为返回值返回,比如:def build(x, y):
return lambda: x * x + y * y
5、‘ 7w876543217w'怎么拆分成[7w,87,65,43,21,7w]
s='sef1234324sdf24sf'
lis = [s[i:i+2] for i in range(0,len(s),2)]
print lis
['se', 'f1', '23', '43', '24', 'sd', 'f2', '4s', 'f']
lis = [s[i:i+2] for i in range(0,len(s),2)]
print lis
['se', 'f1', '23', '43', '24', 'sd', 'f2', '4s', 'f']