新知识:
一、map()函数
二、lambda匿名函数
python允许用lambda关键字创造匿名函数。匿名是不需要以标准的方式来声明,比如说使用 def 语句。
不同之处:
lambda可以定义一个匿名函数,而def定义的函数必须有一个名字。这应该是lambda与def两者最大的区别。lambda是一个表达式,而不是一个语句(lambda is an expression, not a statement.)因此,lambda能够出现在Python语法不允许def出现的地方;例如,在一个列表常量中或者函数调用的参数中。lambda的主体是一个单个的表达式,而不是一个代码块。(lambda's body is a single expression, not a block of statements.),lambda里面的语句相当于def中return中的代码一样。只能是简单的表达式,所以说lambda的能力小于def,在lambda中只能使用简单的语法,不能使用if else while return等语句它的设计理念为:lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。(lambda is designed for coding simple functions, and def handles larger tasks.)
三、字符串是不可变对象
出现了报错:TypeError: 'str' object does not support item assignment
原因是:在python中,字符串是不可变对象,不能通过下标的方式直接赋值修改。同样的不可变对象还有:数字、字符串和元组。
这里这样写是不对的。对字符串的修改可以用加和的方式进行,如下图:
那么如果想替换字符串中的某个字母的话替换为‘%20’,应该怎么做呢?见“五”。
四、join()函数
Python中有.join()和os.path.join()两个函数,具体作用如下:
. join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 属于list转str
os.path.join(): 将多个路径组合后返回
>>#对序列进行操作(分别使用' ' 、' - '与':'作为分隔符)
>> a=['1','2','3','4','5']
>> ' '.join(a)
1 2 3 4 5
>>';'.jion(a)
1-2-3-4-5
>>'.'.join(a)
1.2.3.4.5
>>#对字符串进行操作(分别使用' ' 、' - '与':'作为分隔符)
>>b='hello world'
>> ' '.join(b)
h e l l o w o r l d
>>'-' .join(b)
h-e-l-l-o- -w-o-r-l-d
>>':'.jion(b)
h:e:l:l:o: :w:o:r:l:d
>>#对元组进行操作(分别使用' ' 、' - '与':'作为分隔符)
>>c=('1','2','3','4','5')
>>' '.join(c)
1 2 3 4 5
>>'-'.join(c)
1-2-3-4-5
>>':'.join(c)
1:2:3:4:5
>>#对字典进行无序操作(分别使用' ' 、' - '与':'作为分隔符)
>>d={'name1':'a','name2':'b','name3':'c','name4':'d'}
>>' '.jion(d)
name1 name2 name3 name4
>>'-'.join(d)
name1-name2-name3-name4
>>':'.join(d)
name1:name2:name3:name4
>>#对目录进行操作
>> import os
>>os.path.join('/hello/','good/date','datbody')
hello/good/date/datbody
五、想对一串字符中的某个字母进行替换,需要先将字符串改变类型。
需要把str字符串类型转变成list列表类型,就是需要list函数。 即:
用name = list(name) 。然后就可以:
for i in range(len(name)):
if name[i] == 'i':
name[i] = 'p'
了。
但是最后输出的时候记得再把它变为字符串类型。否则就会输出列表类型,比如:
print(name):
需要改成
print("".join(name)):
六、关于for i in range(5)如果for内部有对i有赋值的话,下次循环i是按赋的值+1还是不受赋值影响?
输出为01134
也就是说,在出现for i in range 5这句话的时候,已经为i生成了一个列表为01234。每次将这个列表中的下一位输入进该函数。这个列表里i 的值不受其他赋值的影响。而如果是按赋的值继续累加的话输出则应该是01123.
七、为什么不能用replace方法?
Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
八、python的print函数比较自由
注:\t表示tab
print中的参数都会打印出来,默认是相隔一个空格。
在非引号里加空格是没有用的,打印出来和上面的一样。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return string字符串
#
class Solution:
def replaceSpace(self , s ):
# write code here
lens = len(s)
s = list(s)
for item in range(0, lens):
if s[item] == ' ':
s[item] = '%20'
s = ''.join(s)
return s