zoukankan      html  css  js  c++  java
  • Python零碎的知识(持续更新)

    0x00:前言

    编程时,经常遇到的零碎而又基础的知识,容易忘,老是重复百度浪费时间,在这里记录一下。

    参考链接

    0x01:内容

    理论类:

    (1)import和from import 的区别

    注意python中import和from import 的区别
    首先明确:尽量不要为了图省事使用from xxx import *
     
    python中有两种导入模块的方式,一种是import xxx,另一种是from xxx import yyy,两者的区别在于,第一种仅仅导入一个模块,并且将该模块执行了一遍,if __main__ =="__main__"里面的没有执行。
    同时,有在当前的命名空间中导入变量,需要通过xxx.yyy的方式使用导入模块中的变量、函数、类等;
    第二种则将模块中的变量yyy导入了当前命名空间,因此使用时可以直接以yyy调用,使用这种导入方法时,需要注意当前的命名空间是否有重名的,from xxx import *这种方式尽量不要使用,因为这样就破坏了对命名空间的管理。
     
    ps:使用from xxx import *时是不能导入以单下划线开头的保护属性和以双下划线开头的私有属性的

    (2)字符串切片

    字符串[ start : stop ]
    str[-1]最后一个字符
     
    带步长
    字符串[ start : stop : stride]

    实际编程类:

    (1)类型转换

    1)bytes     str
    b1 = b'Hello'
    s1 = 'Hello'
    print(type(b1))
    print(type(s1))
    # bytes类型转换为str类型
    # 方法1 str()函数
    s2 = str(b1, encoding="utf-8")
     
    # 方法2 bytes.decode()函数
    s3 = bytes.decode(b1)
    2)list    str
    • 列表to字符串
          list = ['a','b','c']
          result = ''.join(list)
    • 将列表中的值都转换成一个类型
    [str(i) for i in list]
    • 字符串TO列表
    list(str)

    (2)向列表中增加元素

    • list.append(单个元素):在list列表末端增加一个元素;
    • list.extend([元素1,元素2]):在list列表末端增加多个元素;
    • list.insert(元素序号,元素):在list列表任意位置增加一个元素

    (3)两个列表求交集

    list(set(a).intersection(set(b)))
    #方法一:
    a=[2,3,4,5]
    b=[2,5,8]
    tmp = [val for val in a if val in b]
    print tmp
    #[2, 5]
    #方法二print list(set(a).intersection(set(b)))

    方法二更快

    (4)字符串反转

    # _*_  coding:utf-8 _*_
    #方法一
    str = "hello world"
    print(str[::-1])
    #方法二
    from functools import reduce
    print(reduce(lambda x,y:y+x,str))

    字符串的翻转,首先最简单的方法就是利用切片的操作,来实现翻转,其次可以利用reduce函数来实现翻转,在python3中,reduce函数需要从functools中进行导入。

    字符串翻转后,可以用来判断是否是回文

    (5)字母大小写

    str1 = "hell world"
    str2 = "UP"
    print(str1.title()) #每个单词首字母大写
    print(str1.capitalize()) #整个字符串首字母大写
    print(str1.upper()) #所有字母大写
    print(str2.lower()) #所有字母小写

     (6)字符串拆分

    str3 = "I Love Python"
    str3_1 = "I/Love/Python"
    str3_2 = "    I Love Python    "
    print(str3.split()) #默认按照空格进行拆分,返回的是列表
    print(str3_1.split('/'))
    print(str3_2.strip()) #默认去除字符串两边空格,返回字符串

    字符串的拆分可以直接利用split函数,进行实现,返回的是列表,而strip函数用于移除字符串头尾指定的字符(默认为空格或换行符)。

    (7)列表合并成字符串

    list1 = ['I','Love','Python']
    print(' '.join(list1))
    print('++'.join(list1))

    这一条可以认为是第6条的反例,这里是将列表中的字符串合并为字符串。第6条可以与第7条结合,来去除字符串中不想留下的项。

     (8)寻找字符串中唯一的元素

    str4 = "PPPPyyyttthhhnnnnoooo"
    print(''.join(set(str4)))
    
    list1 = [2,2,0,66,100,-1,1,1,1]
    print(list(set(list1)))

    在python中,对于唯一值的筛查,首先应该想到对于set的利用,set可以帮助我们快速的筛查重复的元素,上述程序中,set不仅可以对字符串,而且还可以针对列表进行筛查。

    (9)将列表中的列表展开

     首先,方法1中 ,我们调用的是iteration_utilities 中的deepflatten函数,第二种方法直接采用递归的方法,我们自己来实现复杂列表的展平,便可以得到展开后的列表。

    (10)python中的运算符

    https://www.runoob.com/python/python-operators.html

    (11)pow函数

    1、pow(x,y):这个是表示x的y次幂。

          >>> pow(2,4)
                 16
          >>> 

    2、pow(x,y,z):这个是表示x的y次幂后除以z的余数。

        >>> pow(2,4,5)
               1
        >>>

  • 相关阅读:
    ACM模板——次短路及K短路
    ACM模板——最小生成树
    Leetcode-743 Network Delay Time(网络延迟时间)
    ACM模板——最短路
    HDU-2037 今年暑假不AC
    Leetcode-1015 Numbers With Repeated Digits(至少有 1 位重复的数字)
    Leetcode-1014 Capacity To Ship Packages Within D Days(在 D 天内送达包裹的能力)
    Leetcode-1013 Pairs of Songs With Total Durations Divisible by 60(总持续时间可被 60 整除的歌曲)
    Leetcode-1012 Complement of Base 10 Integer(十进制整数的补码)
    LeetCode--204--计数质数
  • 原文地址:https://www.cnblogs.com/liqik/p/12452471.html
Copyright © 2011-2022 走看看