• Python的用法笔记本


    python什么都好,就是可以的选择实在太多了。所以,用这一篇博文记录一下:

    str和list互相转换

    str转list

    >>> a='apple'
    >>> list(a)
    ['a', 'p', 'p', 'l', 'e']
    

    list转str

    >>> b=['a', 'p', 'p', 'l', 'e']
    >>> ''.join(b)
    'apple'
    

    List的slicing用法

    >>> num=list(range(20))
    >>> num[:]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    >>> num[1:10]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> num[1:-1]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
    >>> num[::-1]
    [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    >>> num[1:9:-1]
    []
    >>> num[9:1:-1]
    [9, 8, 7, 6, 5, 4, 3, 2]
    

    上述例子基本可以包含 slicing 的用法了:

    num[a:b:c]

    a: 表示slice的初始位置,且slice的结果包括它
    b: 表示slice的结束位置,且slice的结果不包括它,这一点在range()函数中也是一样
    c: 表示slice的步长,若是负数,则a:bslice的顺序必须是reversed的顺序,否则就如>>> num[1:9:-1] #[]

    敲黑板,slicing操作对于tuple和string同样适用,只不过返回的仍然是tuple和string

    >>> a
    'apple'
    >>> a[::-1]
    'elppa'
    

    两个list长度对齐

    很多时候,我们需要对list进行补齐处理,然后往短的list后面补None或者0之类的值。其实,语法很简单,就是有时候想不到哈哈。

    首先,对于字符串,python有一个zfill()函数可以往前补0

    >>> s='123'
    >>> s.zfill(6)
    '000123'
    

    然后,对于list呢,我的方法只能这样了:

    >>> a=list(range(3))
    >>> b=list(range(5))
    >>> a.extend([0 for _ in range(len(b)-len(a))])
    >>> a
    [0, 1, 2, 0, 0]
    

    字符串str的前缀或者后缀识别

    str.endswith(suffix[, start[, end]])
    

    Python3 endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

    str.startswith(str, beg=0,end=len(string));
    

    startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

    • 用法:

    比如下述用法,返回特征中后缀带 _cat的columns名称

    c_cat = [c for c in train.columns if c.endswith('_cat')]
    

    判断字符串全为数字

    python有个isdigit()函数,如果str全为数字,则返回true

    关于矩阵生成

    numpy可以生成对角矩阵

    >>> np.eye(5)
    array([[ 1.,  0.,  0.,  0.,  0.],
           [ 0.,  1.,  0.,  0.,  0.],
           [ 0.,  0.,  1.,  0.,  0.],
           [ 0.,  0.,  0.,  1.,  0.],
           [ 0.,  0.,  0.,  0.,  1.]])
    

    numpy生成三角矩阵

    >>> np.tri(3,3,0)
    array([[ 1.,  0.,  0.],
           [ 1.,  1.,  0.],
           [ 1.,  1.,  1.]])
    >>> np.tri(3,3,-1)
    array([[ 0.,  0.,  0.],
           [ 1.,  0.,  0.],
           [ 1.,  1.,  0.]])
    

    list里的部分元素进行排序

    有时候,我们只需要对a[3:]的元素进行排序,并且进行inplace替换,貌似只能这样

    >>> a
    [8, 7, 6, 5, 4, 3, 2, 1]
    >>> a[3:]=sorted(a[3:])
    >>> a
    [8, 7, 6, 1, 2, 3, 4, 5]
    
    • Reference:
    1. python slice的几个小点总结
    2. 关于三角矩阵
  • 相关阅读:
    ORACLE的主要进程DBWn,LGWR的工作原理
    ORACLE PGA
    如何精确获取ORACLE的秒?
    Dictionary.TryGetValue 方法 试用记 Mark
    在C#中如何实现Form与Form之间的通信
    在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 无法打开到 SQL Server 的连接)
    在C#程序中实现插件架构
    兄弟,你有弄过TestDriven.NET吗?
    由C#风潮想起的-给初学编程者的忠告
    今天真是不在状态的一天,又是一个书写的错误(本文仅为提醒自己,你可以选择跳过)
  • 原文地址:https://www.cnblogs.com/bjwu/p/9032691.html
Copyright © 2020-2023  润新知