python leetcode刷题笔记

目录

数组:

******************************************************************字符串:

******************************************************************字典

******************************************************************函数:

******************************************************************类:


百度110道python面试题:https://www.cnblogs.com/lmx123/p/9230589.html
*************************************************************
utf-8和Unicode到底有什么区别?
    unicode基本包含了全世界的字符
    utf-8是对这unicode的字符进行编码的规则
    采取变长编码,常用的字符编码字节少
    把英文的字符编码成1个字节,节省传输消耗的资源。

数组:

list.remove(list[3]) # 移除指定元素
但是在:for i in list:  # list = [2, 3, 4, 5]
            list.remove(i)  # 这里会把i变成索引,然后把索引中的元素remove  
            # 结果为[3, 5] 把i理解为相当于a[i]就理解了

list += [2]  # list前后id不变
list = list + [2]  # list前后id改变

def add(m1, m2=[]):
    m2.append(m1)
    return m2
print(add("1"))  # 1
print(add("2"))  # 1 2
print(add("3", []))  # 3
print(add("4"))  # 1 2 4
            
nums.insert(0,a) # 索引为0插入a

nums[:] = nums[-k:] + nums[:-k]

list(set(list))  # 列表去重

num in list  # 列表in的用法

list.count(0) # 列表种0出现的次数

list = [1, 2]   print(list[2:])  # 不会报错 打印结果[]

列表的复制问题,会跟着改变

list = ['3', '7', '6', '8', '9']
print("".join(list)) # 输出:37689  格式是:<class 'str'>

list.sort()      列表的排序方法

******************************************************************
字符串:

可以用正则做替换:re.sub("S", "s", string)    string中用s替换S
或string.replace("S", "s")

s1 = sorted(s) # 字符串排序生成新的字符串s1,s的顺序不变

字符串移除指定字符用t.replace(a,"")不会更改原来符串t,
是创建新的字符串,会替换所有a

filter(function, iterable) # filter() 函数用于过滤序列,
过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
Pyhton2.7 返回列表,Python3.x 返回迭代器对象,该函数用来过滤序列。

s = ''.join(filter(str.isalnum,s)).lower() # 只保留字母和数字,
字母转为小写

s == s[::-1] # 判断是否回文

ret = re.findall(r"^[-+]?\d+", str.strip()) # ret为列表,元素为字符串

bin(11) = "ob1011"

s = s = "hello world !"
s.split()  # 打印结果['hello', 'world', '!']

******************************************************************
字典

dic = collections.defaultdict(list) # list指values为list
dic的类型:defaultdict(<class 'list'>, {'aet': ['eat']}

d = {'a': 3, 'c': 1, 'b': 2}
d.items() # dict_items([('a', 3), ('c', 1), ('b', 2)])

d_list = sorted(d.items(), key=lambda x: x[1], reverse=False)
按照values从小到大排序
print(dict(d_list)) # {'c': 1, 'b': 2, 'a': 3}

d_list = sorted(d.items(), key=lambda x: x[0], reverse=False)
按照key从小到大排序
print(dict(d_list)) # {'a': 3, 'b': 2, 'c': 1}

d_list = sorted(d.items(), key=lambda x: x[0], reverse=True)
按照key从大到小排序
print(dict(d_list)) # {'c': 1, 'b': 2, 'a': 3}

temp = {"c": 1, 'a': 3, "b": 2}
print(sorted(temp))  # 结果:['a', 'b', 'c']
for key, val in temp.items():
    print(key, val)  # 结果1
    print(f"{key}: {val}")   # 结果2
结果1:
c 1
a 3
b 2

结果2:
a: 3
b: 4
c: 9

******************************************************************
函数:

int(input(), 16)  # 把input()当作16进制转化为十进制数。

int(3.9) # 只取整数部分

map(function, iterable,...) 
如:map(square, [1,2,3,4])   # [1,4,9,16]

匿名函数:
    b = lambda a : a + 3
    print(b(5))   # 结果8

函数不确定参数    
    def print_info1(arg1, *arg2):
        print(arg1)
        print(arg2)

    def print_info2(arg1, **kwargs):
        print(arg1)
        print(arg2)

    list = [1,2,3]
    d = {'a':1, "b":2}

    print_info1(3, 4, 5, 6)   #True
    print_info1(3, list)         #False
    print_info1(3, *list)        #True  *:分开传入

    print_info2(3, 4, 5, 6)           #False
    print_info2(3, a=4, b=5, c=6)     #True
    print_info2(3, **d)               #True

abs() # 取绝对值
ord('C') # 转为ACSII码范围(0~127)

str = "3"
str.isdigit()       # 判断str是否只为数字
str.isalpha()     # 判断str是否为字母

chr()     # 返回当前整数对应的 ASCII 字符

print(a, end='')   # 不换行


******************************************************************
类:

多重继承问题:
class A():
class B(A):
class C():
class D(B, C):

D().run() # 先看D有没有run,再看B有没有run,再看B的父子A有没有run,最后才看C有没有run
print(__mro__)  # 可以查看顺序

int(input(),16)  # 16进制转为10进制
list(map(int, input().split())) # 输入转为整数列表,split()默认为空格
set()  # 去重返回的是乱序

仿函数
    class Hello():
        def __call__(self, a):     #把类直接当作函数用。
            print(a)
    a = Hello()
    a("hello world!")   # 打印出:hello world!

    @classmethod
    def acc(cls): 
    """
    类方法,隐含参数cls,不能调用实例方法,
    可以被实例方法调用
    """
    
    @staticmethod
    def aee(): 
    """
    静态方法,没有参数,不能调用实例方法,
    可以被实例方法调用
    """

__name__   
  
    例如b脚本导入a,
    在a脚本执行a,a的__name__ = __main__;
    其他文件导入,a的__name__ = a的文件名

import random,string
src = string.ascii_letters + string.digits
list_passwd_all = random.sample(src, 5) #从字母和数字中随机取5位
# string.ascii_letters 大小写字母
# string.ascii_lowercase 小写字母
# string.ascii_uppercase 大写字母
# string.punctuation  特殊字符

if ord(ch) < 127: # 字符对应的ACSII码<127
chr(88)   # ACSII码为88对应的字符
hex()  # 将整数转换为十六进制
oct() # 将整数转换为八进制
bin()   # 将整数转换为二进制

super() 函数是用于调用父类(超类)的一个方法
Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx

b --->位(bit)    
B --->字节      一个字节等于8位
1B = 8 bit

if i.isdigit():  # 判断字符串i是否为数字
if i.lower() == i: 判断字符串i的小写为小写字母
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值