• Python切片


    一、切片

    切片是list范围取值的一种方式。

    import string
    print(string.ascii_letters)# 所有的大写+小写字母
    # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
    print(string.ascii_lowercase)# 所有的小写字母
    # abcdefghijklmnopqrstuvwxyz
    print(string.ascii_uppercase)# 所有的大写字母
    # ABCDEFGHIJKLMNOPQRSTUVWXYZ
    print(string.digits)#所有的数字
    # 0123456789
    print(string.punctuation)#所有的特殊字符
    # !"#$%&'()*+,-./:;<=>?@[]^_`{|}~

    1、string.digits

    import string
    nums = []
    for s in string.digits:
        nums.append(int(s))
    print(nums)
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    2、list(string.digits)

    import string
    nums = []
    nums = list(string.digits)
    print(nums)
    # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

    3、切片取部分值

    import string
    nums = []
    nums = list(string.digits)
    print(nums[-6:-10:-1])# 第二个冒号后面值代表步长,是隔几个元素取一次;步长是负数,从右往左开始取值;步长是负数时,前面两个数也要写负数
    # ['4', '3', '2', '1']

    4、切片同样适用于字符串

    步长为负:

       前面两个都不写:则取反

      写第一个,第二个不写:从第一个向左取

      写第二个,第一个不写:从第二个向左取

      写两个:开始位置在结束位置的左侧:取不到

      写两个:开始位置在结束位置的右侧:从右往左取

    stus = ['a1','a2','a3','a4','a5','a6']
    for stu in stus:
        print(stu)
    
    # for i in range(len(stus)):
    #     #0-5
    #     print(stus[i])
    # 上述两种方式输出结果均如下所示:
    # a1
    # a2
    # a3
    # a4
    # a5
    # a6

    字符串示例:

    words = 'hh哈哈哈'
    for word in words:
        print(word)
    # h
    # h
    #
    #
    #

    二、切片,list取值的一种方式

    stus = ['a1','a2','a3','a4','a5','a6']
    print(stus[:3])# 顾头不顾尾,如果开始的元素不写的话,那么就是从最前面开始
    # ['a1', 'a2', 'a3']
    print(stus[-1])# -1代表最后一个元素
    # a6
    print(stus[1:])# 如果后面下标不写的话,代表取到最后
    # ['a2', 'a3', 'a4', 'a5', 'a6']
    print(stus[:])# 开头的下标和结尾的下标都不写的话,代表取整个list
    # ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']
    #    0     1    2    3   4    5     6   7    8
    l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']#切片的时候是顾头不顾尾的
    #   -9    -8    -7   -6   -5   -4   -3   -2   -1
    # print(l[0:9:2]) #步长
    # print(l[::-1])  #如果是负数的话,那么取值的时候就从右往左开始取,同时你的开始和结束下标也要写成负数
    # print(l[-1:-4:-1])

    三、元组,list,但是它是不可变的

    1、元组一旦定义好,就不能再变化。

    cities = ('beijing','shanghai')# 一旦定义好,就不能再变化
    print(cities[0])
    # beijing
    print(cities.count('beijing'))
    # 1
    print(cities.index('beijing'))
    # 0

    2、字符串是不可变的类型,定义好之后不可修改。

    s = 'a1、a2'
    s[0]='b1'
    # 字符串是不可变的类型,定义好之后不可修改
    print(s) # 报错

    修改字符串的内容可用replace进行替换。

    s = 'abcertyabc'
    s = s.replace('abc','')
    print(s)
    # erty

    3、list的id

    a = [1,1,2,3,43,5,6,72]
    b = a[:]
    print(id(a)) # 10603016
    print(id(b)) # 10622920
    a = [1,1,2,3,43,5,6,72]
    b = [1,1,2,3,43,5,6,72]
    print(id(a)) #11586056
    print(id(b)) #11605960
    a = [1,1,2,3,43,5,6,72]
    b = [1,1,2,3,43,5,6,72]
    b = a
    print(id(a)) #6933000
    print(id(b)) #6933000

    4、取得已知list中的偶数:

    a = [1,1,2,3,43,5,6,72]
    b = a[:]
    for i in b:
        if i%2 !=0:
            a.remove(i)
    print(a)
    # [2, 6, 72]

    5、对a和b重新赋值

    a = 'haha'
    b = a
    print('重新赋值之前的:',id(b)) #重新赋值之前的: 6870104
    print('重新赋值之前的:',id(a)) #重新赋值之前的: 6870104
    a = 'sk'
    print(b) # haha
    print(a) # sk
    print(id(b)) # 6870104
    print(id(a)) # 6870272

    6、a,b = 1,2  交换a和b的两个值:

    c = 0
    a,b = 1,2
    c = a
    a = b
    b = c
    print(a,b)

    四、练习题:

    a,b = 1,2

    在不引入第三个变量的下,把a,b交换过来

    方法一:

    a,b = 1,2
    b = a+b
    a = b-a
    b = b-a
    print(a,b)

    方法二(python独有):

    b,a = a,b
    print(a,b)

     

  • 相关阅读:
    openerp学习笔记 模块结构分析
    Odoo文档管理/知识管理应用实践
    POSTGRESQL DEFAULT TEMPLATE0 НА UTF8 ENCODING
    could not execute command lessc odoo
    XPath 元素及属性查找
    pycharm 使用心得(四)显示行号
    mimetypes.py的UnicodeDecodeError
    win7源码运行odoo8.0错误
    xUtils 中的BitmapUtils 全面注释
    Android初级到高级指南(精华版)
  • 原文地址:https://www.cnblogs.com/Noul/p/9156100.html
Copyright © 2020-2023  润新知