zoukankan      html  css  js  c++  java
  • Python学习---Python下[列表]的学习

    列表[list]用中括号[]表示,处理一组有序项目的数据结构,列表的类型是可变的数据类型,类型是list

    列表是可变/线程不安全的

    # type(a) = list  利用type判断元素离线

    # 切片是左闭右开[m,n)的

    # 取得方向由第三个参数的正负决定,不变的还是原来列表的下标

    # -1代表最后一个元素

    # ::代表到最后

    #列表时可变的

    #可以利用id查看列表在内存中的存储位置

    列表的创建+查询

    列表的查:切片,index, count

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    # print(id(name))
    # 切片是左闭右开的形式,左右只是取的方向而已,不变的还是列表下标
    # 打印所有元素
    #print("打印所有元素:", name)
    print("打印所有元素:", name[0:name.__len__()])
    print("打印所有元素(默认到最后):", name[0:])
    # 打印第一个
    print("打印第一个: ", name[0])
    # 取出后面2个
    print("取出后面2个: ", name[3:5])
    # 取出world后面的所有元素,默认取到最后一个
    print("取出world后面的所有元素: ", name[1:])
    # -1代表最后一个元素
    print("-1代表最后一个元素: ", name[-1])
    # 去除最后一个元素
    print("去除最后一个元素:", name[0:-1])
    # 虽然超出了最大范围,但是默认是取到最后一个元素
    print("超出了最大范围,但默认取到最后一个元素:", name[1:10])
    # 间隔一个取一个元素(默认间隔是1,就是每一个元素都取到)
    print("间隔一个取一个元素(默认间隔是1,就是每一个元素都取到):", name[0::2])
    # 从右向左取值,取出全部元素
    print("从右向左取值name[-1::-1],取出全部元素:", name[-1::-1])
    # 注意:如果用到了0下标,则会少一个值
    print("从右向左取值name[-1:0:-1],取出全部元素:", name[-1:0:-1])
    # 从右向左取值(间隔一个取一个)
    print("从右向左取值,间隔一个取一个:", name[-1::-2])
    # 只打印 hhh,world
    print("只打印 hhh,world:[3::-2]",  name[3::-2])
    print("只打印 hhh,world:[-2::-2]", name[-2::-2])
    # 默认是+1的方向
    print("默认是+1的方向:", name[-2::])

    image

    count 方法统计某个元素在列表中出现的次数

    name = ['a', 'b', 'c', 'a']
    print(name.count('a'))          --> 2

    index:  根据元素内容返回元素所在的位置,如果有2个相同的元素,以第一个为准

    name = ['z', 'a', 'b', 'c', 'a']
    print('a的第一个位置是:', name.index('a'))        # -->1
    # 强制取出第二个a的位置
    print(name[name.index('a')+1::].index('a') + name.index('a')+1)

    嵌套的列表练习

    boy = [['ftl', 12, 'male'], ['hhh', 13, 'female'], ['pig', 0, 'unknow']]
    print("info of HHH: ", boy[1])
    print("age of HHH: ", boy[1][1])

    image

    for循环的特殊打印

    te = [['Shell', 150], ['Python', 600], ['Mysql', 200], ['Oracle', 400]]
    print("整体打印1:", te)
    print("整体打印2(用循环):")
    for i in te:
        print(i)
    print('te的大小:', len(te))
    print("[k,v]的使用:")
    for i, v in te:
        print(i, v)

    image

    利用list类来创建列表: 可以看出跟使用小括号,中括号还是大括号关系不大,构造出来的都是列表

    name = list([1, 2, 3, 4, 5, 6])
    print(name)
    name2 = list((7, 8, 9, 10, 11, 12))
    print(name2)
    name3 = list({13, 14, 15, 16, 17, 18})
    print(name3)

    image

    利用列表生成器来生成列表,也可以放置函数进行操作

    # 列表生成器

    a = [ x*2 for x in range(10)]  # 找出X并且对X进行操作
    print(a)               # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

    # 在函数内操作

    def plus(x):
        return x ** 3
    # b = [plus(x) for x in [1, 3, 5]]   是个序列就好
    b = [plus(x) for x in range(10)]
    print(b)                # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

    列表的特殊赋值:注意元素的个数和列表里面的数量相同

    c = ['hello', 'world']
    x,y = c
    print(x, y)      # hello world

    列表的增加:append,insert,extend

    append默认是插入到列表尾部,修改的是索引值

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    print('--------------------------------------------------------------------------------')
    print("Append修改前:", name[0:])
    # append默认是插入到列表尾部
    name.append('python')
    print("Append修改后:", name[0:])
    print('--------------------------------------------------------------------------------')
    print("Insert修改前:", name[0:])
    # 修改的是索引值
    name.insert(0, "Java")
    print("Insert修改后:", name[0:])
    print('--------------------------------------------------------------------------------')

    image

    extend 方法可以在列表的末尾一次性追加另一个序列中的多个值。

    extend 方法修改了被扩展的列表,而原始的连接操作(+)会返回一个全新的列表, 且不影响原来的列表。

    name = ['a', 'b', 'c']
    name2 = ['e', 'f', 'g']
    name2.extend(name)
    print("name :", name)
    print("name2.extend(name):", name2)
    name3 = ['x', 'y', 'z']
    print("name + name3:", name + name3)

    image

    列表的修改:

    同时修改多个元素,需要用列表来再次赋值

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    # 修改2017为2018
    print("修改前:", name[0:])
    name[2] = '2018'
    print("修改后:", name[0:])
    print('--------------------------------------------------------------------------------')
    # 修改hello world 为 Java Python
    print("修改前:", name[0:])
    name[0:2]=['Java', 'Python']
    print("修改后:", name[0:])

     

    image

    特殊情况:如果替换和被替换的数量对不上,就会删除那个位置的元素

    name = ['a', 'b', 'c', 'd', 'e']
    #name[1:4]  ==> b c d
    print(name)
    name[1:4] = ['B', 'C']
    print(name)

     

    image

    列表的删除:remove pop  del

         remove删除的是元素,不是下标

         pop   删除的是下标,而且会返回删除的元素,什么都不写默认删除最后一个值

         del   是一个函数,既可以删除某个元素,也可以删除list对象

         clear  清空,但是还是保留原来的列表属性

    Remove:

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    # 删除2017
    print("修改前:", name[0:])
    # remove的是元素,不是下标
    # name.remove(1)  --> ValueError: list.remove(x): x not in list
    name.remove('2017')
    # name.remove(name[2])  -->效果相同,相当于用列表取出元素后删除
    print("修改后:", name[0:])
    

    Pop: 删除下标,而且可以拿到删除后的内容

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    # 删除2017
    print("修改前:", name[0:])
    year=name.pop(2)
    print("修改后:", name[0:])
    print("year:", year)
    #特殊:默认删除最后一个元素
    name.pop()
    print(name)

    image

    Del: 是一个函数,既可以删除某个元素,也可以删除list对象

    # list = ['hello', 'world', '2017']  会有告警,因为list是关键字
    name = ['hello', 'world', '2017', 'hhh', 'ftl']
    # 删除2017
    print("修改前:", name[0:])
    del name[2]
    print("修改后:", name[0:])
    
    # 删除name对象
    del name
    print("删除name对象后:", name[0:])
    

    image

    其他

    reverse 方法将列表中的元素反向存放

    name = ['a', 'b', 'c']
    name.reverse()
    print(name)

    image

    sort 方法用于在原位置对列表进行排序,默认升序

    name = ['z', 'a', 'b', 'c', 'a']
    name.sort()
    print(name)
    name.sort(reverse=True)
    print(name)

    image

  • 相关阅读:
    RFC7296--Internet密钥交换协议版本2(IKEv2)
    IPSec 100问
    strongswan--函数定义宏
    RFC6311--协议支持IKEv2 / IPsec的高可用性
    IPSec之security acl
    华罗庚
    韩罗塔核心算法
    javaBean
    Servlet
    javaee Api
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9381866.html
Copyright © 2011-2022 走看看