python 刷题遇到的一些

1.判断一个值是否在字典的key中,只需要用in判断即可

dic={'a':1,'b':2}
if 'a' in dic:
     print(dic['a'])

2.一个整数转为数组,一个数组表示的整数转回整数

# 整数转数组
nums=[int(x) for x in str(n)]
1234
[1,2,3,4]

#数组转整数
int(''.join(str(item) for item in nums))
[1,2,3,4]
1234

3.用字典统计字符串中每个字符出现的频率

统计数组中元素出现的频率

s = 'leetcode'
frequency = collections.Counter(s)

Counter({'e': 3, 'l': 1, 't': 1, 'c': 1, 'o': 1, 'd': 1})


dic = {i: all_tnp.count(i) for i in set(all_tnp)}

['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'n', 'na', 'nan', 'nana', 'a', 'an', 'ana', 'n', 'na', 'a']

{'ba': 1, 'banana': 1, 'anana': 1, 'ban': 1, 'nana': 1, 'anan': 1, 'n': 2, 'na': 2, 'b': 1, 'bana': 1, 'an': 2, 'ana': 2, 'nan': 1, 'a': 3, 'banan': 1}

4.两数相加(模板)

while ( A 没完 || B 没完)
    A 的当前位
    B 的当前位

    和 = A 的当前位 + B 的当前位 + 进位carry

    当前位 = 和 % 10;
    进位 = 和 / 10;

判断还有进位吗

leetcode2,leetcode989

5.套嵌列表排序

arr = [['a', 2], ['b', 1], ['c', 3]]
arr.sort(key=lambda x: x[1])

[['b', 1.0], ['a', 2.0], ['c', 3.0]]

删除多余的最小元素,输出第二小的全部name(按照字母排序)

    '''
    先对数字排序,选出第二小的数字
    循环输出数字相等的name
    '''
    arr = [['Harsh', 20], ['Beria', 20], ['Varun', 19], ['Kakunami', 19], ['Vikas', 21]]
    s = sorted(set([x[1] for x in arr]))
    print(s)
    for name in sorted(x[0] for x in arr if x[1] == s[1]):
        print(name)
    
Beria
Harsh

6.将列表里的字符串,分行打印

    result = ['Beria', 'Harsh']
    print(result)
    print(*result, sep="\n")


['Beria', 'Harsh']


Beria
Harsh

7.执行表达式语句

x = 10

def func():
    y = 20
    a = eval('x + y')
    print('a: ', a)
    b = eval('x + y', {'x': 1, 'y': 2})
    print('b: ', b)
    c = eval('x + y', {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    print('c: ', c)
    d = eval('print(x, y)')
    print('d: ', d)

func()


a:  30
b:  3
c:  4
10 20
d:  None

8.首字母转为大写与第一个字符转为大写

    s = '1 w 2 r 3g'
    print(s.title())
    print(" ".join([x.capitalize() for x in s.split(' ')]))


首字母转为大写 1 W 2 R 3G
字符串的第一个字符转为大写 1 W 2 R 3g

9.当前字符和当前字符开头的所有子字符串=字符串长度-当前字符的下标

def minion_game(string):
    stuart = 0
    kevin = 0
    for i in range(len(string)):
        if string[i] in "AEIOUaeiou":
            kevin += len(string) - i
        else:
            stuart += len(string) - i
    if kevin > stuart:
        print("Kevin", kevin)
    elif stuart > kevin:
        print("Stuart", stuart)
    else:
        print("Draw")

10.按顺序将字符串截成k个元素一组

    string, k = 'AABCAAADA', 3
    r=[]
    for i in range(len(string) + 1):
        if len(string[:i]) >= k:
            r.append(''.join(string[i - k:i]))
    print(r)

['AAB', 'ABC', 'BCA', 'CAA', 'AAA', 'AAD', 'ADA']

11.去除列表中重复的元素并保持顺序不变(也没啥高端的方法)

def remove_duplicates_and_preserve_order(input_string):
    unique_chars = []
    for char in input_string:
        if char not in unique_chars:
            unique_chars.append(char)
    result_string = ''.join(unique_chars)
    return result_string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值