【Python】刷题常用语法汇总

Python刷题常用语法汇总

一、字符串操作

字符串是不可更改的对象,因此无法直接修改字符串的某一位字符。 一种可行的方式是:将字符串转换为列表,修改列表的元素后,再重新连接为字符串。

s = "thisisastring"
l = list(s)
l[0] = "T"
print(''.join(l))
  1. join() 方法:用于将序列中的元素以指定的字符连接生成一个新的字符串。
    def join(self, ab=None, pq=None, rs=None): 
        """
        Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
        """
  1. split()方法:通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
    def split(self, *args, **kwargs):
        """
        Example: "this is a string".split(' ') -> ['this', 'is', 'a', 'string']
        """
  1. strip() 方法:用于移除字符串头和尾指定的字符(默认为空格或换行符)或字符序列。
    def strip(self, *args, **kwargs):
        """
        Example: "aaastripaa".strip("a") -> 'strip'
        """
  1. repr() 方法:用于输出转义字符。
s = 'hello\nworld'
print(repr(s))

二、列表

  1. 初始化一维列表
l1 = [0]* 9
# [0, 0, 0, 0, 0, 0, 0, 0, 0]

l2 = [0 for i in range(9)]
# [0, 0, 0, 0, 0, 0, 0, 0, 0]

l3 = [i for i in range(9)]
# [0, 1, 2, 3, 4, 5, 6, 7, 8]

l4 = list(range(9))
# [0, 1, 2, 3, 4, 5, 6, 7, 8]


  1. 初始化二维列表
# 初始化一个5 x 3每项为0的数组
multilist1 = [[0 for col in range(5)] for row1 in range(3)]
multilist2 = [[0]*5 for row2 in range(3)]

三、STL

  1. 双端队列:collections.deque()
  2. 优先队列:queue.PriorityQueue()
  3. 队列:queue.Queue()
  4. LIFO队列:queue.LifoQueue()
  5. 堆:heapq.heapify()

四、排序

排序规则的定义规定:{1, -1, 0} 分别代表{大于, 小于, 等于}。

  • sort():用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
  • sorted():对所有可迭代类型进行排序,并且返回新的已排序的列表。可以自定义排序,选择升序或降序。
# 例如:LeetCode 剑指 Offer 45. 把数组排成最小的数
def minNumber(self, nums: List[int]) -> str:
        def sort_rule(x, y):
            a, b = x + y, y + x
            if a > b: return 1
            elif a < b: return -1
            else: return 0
        
        strs = [str(num) for num in nums]
        strs.sort(key = functools.cmp_to_key(sort_rule))
        return ''.join(strs)

五、直接赋值,浅拷贝与深拷贝

  • 直接赋值:其实就是对象的引用(别名)。

  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。所以原始数据改变,子对象会改变。

  • 深拷贝(deepcopy): 完全拷贝了父对象及其子对象。所以原始对象的改变不会造成深拷贝里任何子元素的改变

六、位运算

  • 异或^
    – 两个相同的数异或结果为0
    – 交换两个数:
    a = a^b
    b = a^b
    a = a^b
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值