Python学习笔记之第6课记录

1.元组

  • 元组是一个序列,如同列表一样可以存放多个不同类型的数据,又如同字符串一样具有不可更改的特性。
  • 形式 tuple = (元素1, 元素2, 元素3……),但同时元组还有更加简洁的方式直接不加括号也可。
  • 元组可以使用下标索引
  • 元组对比列表只有查找功能,没有增删改功能
  • 元组可以使用切片,切片只是输出导出一个新的对象并不会修改元组本身
  • 元组支持加法和乘法
  • 元组支持嵌套
  • s = (1,2,3)
    t = (4,5,6)
    w = s,t
    print(w)
    ''' 输出((1, 2, 3), (4, 5, 6))'''

    元组嵌套也支持 for 语句的迭代访问。

  • 可通过列表推导式访问元组元素,但没有元组推导式(而是生成器),具体意思如下:
  • tuple = (1,2,3,4,5,6)
    rhyme = [i * 2 for i in tuple]
    print(rhyme)
  • 如何生成只有一个元素的元组,不是 s = (1) 而是 s = (1,)
  • tuple = (1)
    print(type(tuple))
    ''' <class 'int'>'''
    
    tuple = (1,)
    print(type(tuple))
    ''' <class 'tuple'>'''

    可以看出第一个是整型,第二个才是元组型

  • 元组的打包与解包,打包是指生成元组的过程,解包是指将元组中的元素一次性赋值给多个变量的做法
  • tuple = (1,"python",3.14)
    x,y,z = tuple
    print(x,y,z)
    ''' 输出 1 python 3.14'''

    事实上解包不仅用于元组,也适用于任何的序列类型如列表、字符串。需要注意一点,赋值号左边变量的数量一定等于右边元素的数量。

    x,y,z,t = "aptx"
    print(x,y,z,t)
    ''' 输出 a p t x'''
  • python 的多重赋值 x,y = 10,20,其实赋值过程包含了打包与解包。
  • 元组中的元素是不可变的,但当元组中的元素是指向一个可变的列表时,它就是可变的
  • s = [1,2]
    t = [3,4]
    tuple = (s,t)
    print(tuple)
    tuple[0][1] = 5
    print(tuple)
    
    ''' 输出 ([1, 2], [3, 4])
             ([1, 5], [3, 4])''

    2.字符串

  • 使用字符串可实现快速检测回文数,因字符串是序列可采用切片方法,切片将数翻转即可
  • x = input()
    print("是回文数") if x == x[::-1] else print("不是回文数")
  • 下面是一些关于修改大小写的函数,这写函数返回的不是原字符串因为字符串不可变,只是按照规则生成一个新的字符。
  • apitalize() 将字符串首字母变为大写,其他为小写
    casefold() 所有字母都变小写
    title() 将字符串中每个单词的首字母变大写,其他小写
    swapcase() 字符串大小写翻转
    upper() 所有字母变大写
    lower() 所有字母变小写(只能处理英文与casefold区别)
  • 关于左中右对齐函数
  • center(width,f) 居中
    ljust(width,f) 左对齐
    rjust(width,f) 右对齐
    zfill(width) 用0填充左侧

    其中width表示宽度,当宽度小于或等于字符串时,会直接输出原字符串,不受函数影响; f 表示填充的东西(可以使用数字、字符串等),不规定默认使用空格。

  • 关于查找的函数
  • count(sub,star,end) 查找sub(子字符串)在原字符串中出现次数
    find(sub,star,end) 定位子字符串索引下标值(从左向右),无返回值时返回-1
    rfind(sub,star,end) 定位子字符串索引下标值(从右向左),但下标值从左往右计算
    index() 定位子字符串索引下标值(从左向右),但当没有返回值时会报错
  • 关于替换的函数
  • expandtabs([tabsizes=8]) 将制表符全部转换为空格,参数表示一个制表符转换为几个空格
    replace(old,new,count=-1) count表示替换的次数,默认-1就是全部
    translate(table) 返回一个根据table参数转换后的新字符串,像是解密,,需要一个str.maketrans(x,[,y[,z]])先获取密码表格
    t = "acbad".replace("a","e")
    print(t)
    ''' 输出 ecbed '''
    
    
    s = "bBaGc DEG DEF "
    table = str.maketrans("aBcDEF","123456","DEF")
    t = s.translate(table)
    print(t)
    ''' 输出 b21G3 G  '''

    str.maketrans(x,[,y[,z]]) 中的参数x,y表示对照,将x替换为y且区分大小写;参数z表示需要忽略的字符串,不会在返回值中出现。

  • 关于判断的函数
  • startswith(prefix[,star[,end]]) 用于判断指定字符串是否出现在起始位置(左闭右开),参数可以为一个元组
    endswith(suffix[,star[,end]]) 用于判断指定字符串是否出现在结束位置(左闭右开),参数可以为一个元组
    isupper()       判断字符串中所有单词都是大写,并不会检测汉字
    islower() 判断字符串中所有单词都是小写
    istitle() 判断字符串中所有单词是否都为大写开头,其他为小写
    isalpha() 判断字符串中所有字符是否都是字母
    isascii()
    isspace() 判断字符串中所有字符是否都是空白字符串
    isprintable() 判断字符串中所有字符是否都是可以打印的(如转义字符便不可打印)
    isdecimal() 判断字符串中所有字符是否为数字
    isdigit() 判断字符串中所有字符是否为数字
    isnumeric() 判断字符串中所有字符是否为数字(三者范围不同)
    isalnum() isalpha() isdecimal() isdigit() isnumeric()中任意一个为True 它即为True相当于并集
    isidentifier() 判断字符串是否为一个合法的Python标识符(如变量名中含有空格不是一个合法的,可替换为下划线,含有数字也不是一个合法的)

    如果想判断一个字符串是否为Python的保留标识符(if for while这些关键字等等),可以使用keyword模块的iskeyword()函数

  • 关于截取函数
  • strip(chars=None) 删除字符串左侧和右侧的空白,默认为 None表示空白的意思,可更改为任意字符串;若定义为任意字符串规则变成,原字符串的字符与定义字符串的字符逐个匹配删除直到遇到第一个不匹配的字符。
    lstrip(chars=None) 删除字符串左侧的空白
    rstrip(chars=None) 删除字符串右侧的空白
    removeprefix(prefix) 指定删除前缀(与前面不同在于是原字符串与定义字符串整体相匹配而非字符串中的字符)
    removesuffix(suffix) 指定删除后缀
  • 关于拆分和拼接函数
  • partition(sep) 将原字符串以指定字符串拆分为三部分(遇到的第一个指定字符串),并以元组形式返回(从左向右)
    rpartition(sep) 从右向左
    split(sep=None,maxsplit=-1) 将原字符串拆分为多个部分,并以列表形式返回;第一个参数不指定则会默认空格或者换行符作为拆分标志。
    rsplit(sep=None,maxsplit=-1) 第二个参数表示拆分个数,默认-1表示全部,若定义为1,则是拆分一处,拆分的字符会被删除。

    splitlines(keepends=False)

    在换换行符(无论哪种操作系统下的换行符均可)处分割,并以列表形式返回;其中参数是指结果是否包含换行符,若包含则为True,默认为False。
    t = "i.love.python"
    print(t.partition("."))
    ''' 输出 ('i', '.', 'love.python') '''
    
    t = "i love python"
    print(t.split())
    ''' 输出 ['i', 'love', 'python'] '''
    
    t = "i.love.python"
    print(t.split("."))
    ''' 输出 ['i', 'love', 'python'] '''
    
    t = "i.love.python"
    print(t.split(".",1))
    ''' 输出 ['i', 'love.python'] '''
    
    t = "i\rlove\npy\r\nthon"
    print(t.splitlines())
    ''' 输出 ['i', 'love', 'py', 'thon'] '''

    join(iterable) 字符串拼接       拼接字符串.join(["被拼接字符串1","被拼接字符串",…..]) 当然不止可以采用列表,也可采用元组。这比用加号拼接字符串效率高很多。

    t = ".".join(["i","love","python"])
    print(t)
    ''' 输出 i.love.python '''
    
    t = " A ".join(("i","love","python"))
    print(t)
    ''' 输出 i A love A python '''

    作者:AptX -4869

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python学习笔记之第6课记录

    发表回复