python日常刷题(二)

2024-09-12 12:46:10 浏览数 (1)

错题集

一,max比较和列表推导式

注意当列表中的元素是字符串的时候,maxmin比较时比较的是字符串,如下:

代码语言:javascript复制
list = ["1","49","30",'9','0']
print(min(list))
print(max(list))

虽然我希望能够输出0和49,但是比较的时候是根据字符串的比较规则,导致输出的是9和0 如果希望输出里面的最小数字和最大数字,我们可以先把它们转换成整型 如,解决下题:

代码:

代码语言:javascript复制
list = input().split(" ")
list = [int(x) for x in list]  # 把列表中的元素转换成整型
print(max(list))
print(min(list))

二,栈

1,题1

这道题,值得注意的是:先往列表里面存入一个元素

代码语言:javascript复制
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()函数:十进制转二进制 例如:

代码语言:javascript复制
print(hex(100))
print(bin(100))

输出:

四,赋值

用列表一次性给多个元素赋值也是可以的:

代码语言:javascript复制
a,b = [1,2]

使用map(): map() 第一个参数是函数,第二个参数是个迭代器:把序列中的每一个元素赋值给第一个函数,然后返回返回一个存放这些结果的map对象实例

代码语言:javascript复制
a,b = map()
代码语言:javascript复制
a,b = new_list = map(lambda x:int(x), input().split())
print(a,b)  # 输入:1 2  输出:1 2(转换成了整型)

五,pow()

代码语言:javascript复制
pow(base, exponent)

abse:底数 exponent:指数

如:

代码语言:javascript复制
pow(2, 3)  # 返回 2 的 3 次幂,即 8

六,join方法可以连接字符串

例如: 以空格" "为分隔符,把list1的每个元素连成一个字符串

代码语言:javascript复制
list1 = ["Hello", "world", "I", "am", "learning", "Python"]
print(" ".join(list1)) 
# 输出:"Hello world I am learning Python"

七,列表推导式-变向删除

当我希望删除列表中的素数元素: 错误代码:

代码语言:javascript复制
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)

因为删除元素的时候会减小列表的长度,所以后续会造成越界

我们可以用列表推导式来提取元素,从而变向达到删除的效果:

代码语言:javascript复制
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中的一个函数,用于将序列(如列表、元组或字符串)中的元素随机打乱顺序。 原型:

代码语言:javascript复制
random.shuffle(iterable, random=None)

iterable: 要打乱顺序的序列(可修改)。 random: 随机数生成器,用于提供随机性。如果未指定或为None,则使用默认的随机数生成器。 返回值:直接对原序列进行修改,返回打乱顺序后的序列。 示例:

代码语言:javascript复制
import random

# 打乱列表的顺序
lst = [1, 2, 3, 4, 5]
random.shuffle(lst)
print(lst) 

0 人点赞