前言:本文记录2024年4月9日至2024年4月13日做题时遇到的几个问题(错题本):
🎬个人简介:努力学习ing
📋本专栏:python日常刷题
🎀CSDN主页:愚润求学
文章目录
- 错题集
- 一,max比较和列表推导式
- 二,栈
- 1,题1
- 三,hex和bin
- 四,赋值
- 五,pow()
- 六,join方法可以连接字符串
- 七,列表推导式-变向删除
- 八,shuffle函数打乱
错题集
一,max比较和列表推导式
注意当列表中的元素是字符串的时候,max
和min
比较时比较的是字符串,如下:
list = ["1","49","30",'9','0']
print(min(list))
print(max(list))
虽然我希望能够输出0和49,但是比较的时候是根据字符串的比较规则,导致输出的是9和0
如果希望输出里面的最小数字和最大数字,我们可以先把它们转换成整型
如,解决下题:
代码:
list = input().split(" ")
list = [int(x) for x in list] # 把列表中的元素转换成整型
print(max(list))
print(min(list))
二,栈
1,题1
这道题,值得注意的是:先往列表里面存入一个元素
class Solution:
def isValid(self, s:str) -> bool:
maches = {'(':')', '[':']', '{':'}', '?':'?'} # 这个?是为了当?被pop出来的时候,可以有键与之匹配
stock = ['?'] # 这个问号的意义:为了让stock不为空,例如:如果第一个元素为右括号时,让列表可以被pop()
for i in s:
if i in maches:
stock.append(i)
elif i != maches[stock.pop()]:
return False
return len(stock) == 1 # 判断是不是所有左括号都被匹配完了
三,hex和bin
hex()
函数:十进制转十六进制
bin()
函数:十进制转二进制
例如:
print(hex(100))
print(bin(100))
输出:
四,赋值
用列表一次性给多个元素赋值也是可以的:
a,b = [1,2]
使用map()
:
map() 第一个参数是函数,第二个参数是个迭代器:把序列中的每一个元素赋值给第一个函数,然后返回返回一个存放这些结果的map对象实例
a,b = map()
a,b = new_list = map(lambda x:int(x), input().split())
print(a,b) # 输入:1 2 输出:1 2(转换成了整型)
五,pow()
pow(base, exponent)
abse:底数
exponent:指数
如:
pow(2, 3) # 返回 2 的 3 次幂,即 8
六,join方法可以连接字符串
例如:
以空格" "
为分隔符,把list1
的每个元素连成一个字符串
list1 = ["Hello", "world", "I", "am", "learning", "Python"]
print(" ".join(list1))
# 输出:"Hello world I am learning Python"
七,列表推导式-变向删除
当我希望删除列表中的素数元素:
错误代码:
def is_prime(num: int) -> bool:
for i in range(2, int(num/2)):
if num % i == 0:
return False
return True
ls = [23, 45, 78, 87, 11, 67, 89, 13, 243, 56, 67, 311, 431, 111, 141]
for pos in range(len(ls)):
if is_prime(ls[pos]):
del ls[pos]
print(ls)
因为删除元素的时候会减小列表的长度,所以后续会造成越界
我们可以用列表推导式来提取元素,从而变向达到删除的效果:
def is_prime(num: int) -> bool:
for i in range(2, int(num/2)):
if num % i == 0:
return False
return True
ls = [23, 45, 78, 87, 11, 67, 89, 13, 243, 56, 67, 311, 431, 111, 141]
ls = [num for num in ls if not is_prime(num)]
print(ls)
八,shuffle函数打乱
shuffle
函数是Python内置库random
中的一个函数,用于将序列(如列表、元组或字符串)中的元素随机打乱顺序。
原型:
random.shuffle(iterable, random=None)
iterable
: 要打乱顺序的序列(可修改)。
random
: 随机数生成器,用于提供随机性。如果未指定或为None,则使用默认的随机数生成器。
返回值
:直接对原序列进行修改,返回打乱顺序后的序列。
示例:
import random
# 打乱列表的顺序
lst = [1, 2, 3, 4, 5]
random.shuffle(lst)
print(lst)