用python刷算法题中的小技巧
我们需要知道python的一些常用小技巧:
下面列出一些在蓝桥杯python编程需要用到的小技巧:
学习过python的同学一定知道,学习python语法是很简单的一件事情。相比于c,c++,再简单不过了,我相信稍微有一点编程基础的同学,用上一天就能把python的基础语法差不多掌握。但是,在实际写代码的时候,总是会遇到各种各样的“坑”,让初出茅庐的我们经常“卡死”在某一个小环节上,然后开始怀疑人生。
我将一些比较实用的坑给大家罗列一下,让代码之路更加平坦一些吧!
列表怎么转化为字符串
一个列表存储了一段字符
ls = ["1","2","3"]
我们怎么样把这个列表变成一个字符串 “123”呢?
也许你有很多的想法,但是下面这一句代码可以很好的解决这个问题:
"".join(ls)
这样就将ls转化为字符串了,它的返回值时:“123”
字符串可以看做可迭代对象
众所周知,列表是可以迭代的:
ls = ["a","b","c"]for i in ls:
print(i)
a b c
字符串也可以这样操作:
s = "abc"for i in s:
print(i)
a b c
字符串是不可变对象
我们有时候会想改变字符串里的某一个字符,例如将“abc”变成“abd”,于是有了下面的代码:
s = "abc"s[2] = "d"
看上去非常合理,运行一些,哦豁,报错了,鲜红的字体:
TypeError: 'str' object does not support item assignment
这是为啥呢?真相就是,在python中,字符串是不可变的,在python中,像这样的例子还有这些:
数字
字符串
元组
不可变集合
他们都不支持原处修改的,切记
那么,怎么样去修改固定的某一个字符呢?
可以先将字符串转化为列表,修改完之后再转化为字符串
s = "abc"temp = list(s)temp[2] = "d"s = "".join(temp)print(s)
太长了,有没有更好一点的办法呢,有,使用replace函数:
s = "abc"s = s.replace("c","d")print(s)
当然还有其他的办法,但是你要记住的就是,字符串是不可变的!
怎么样接收由空格分开的多个数据
这个在算法题里面是很常见的,
我们有时候想会接受多个数据,但是是用空格分割的,怎么样去接收呢?很简单,用split函数:
ls = input().split()
split()函数括号里填写的是分割符,不填默认的就是空格,这样,假如你输入 1 2 3:
ls就等于 [1,2,3],接下来你就可以随意取用了
同时改变列表中所有元素的类型
比如说你有一个列表,里面的列表元素全部都是字符型,你需要将这些字符全部转化为int型,这个时候你可以写一个循环来实现,但是更加简洁的方法是使用map函数
ls = input().split()ls2 = list(map(int,ls))
map函数说白了,就是对可迭代对象里面的每一个元素,进行同一种映射,上面的代码就是将ls里的每一个元素,都用int()函数映射为int型,将返回的对象再用list()函数转换为列表
假如ls1 = ["1","2","3"]
那么ls2 = [1,2,3]