zoukankan      html  css  js  c++  java
  • 009-python基础-数据类型-列表和元组

    一、列表

    • 在python中叫“列表”,其他语言中成为“数组”
    • 元素中可以存储字符串、数字甚至变量。
    • 元素索引顺序从0开始。 例如 name_list[0] 就是‘alex'

      1. 创建列表

    1 name_list = ['alex', 'seven', 'eric']
    2 3 name_list = list(['alex', 'seven', 'eric'])

       2、索引

    1 names = ['Alex',"Tenglan",'Eric']
    2 >>> names[0]
    3 'Alex'
    4 >>> names[2]
    5 'Eric'
    6 >>> names[-1]    # "-1"表示最后一个  
    7 'Eric'
    8 >>> names[-2]  #  还可以倒着取
    9 'Tenglan'

       3、切片

     1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
     2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
     3 ['Tenglan', 'Eric', 'Rain']
     4 >>> names[1:-1] #取下标1至-1的值,不包括-1
     5 ['Tenglan', 'Eric', 'Rain', 'Tom']
     6 >>> names[0:3] 
     7 ['Alex', 'Tenglan', 'Eric']
     8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
     9 ['Alex', 'Tenglan', 'Eric']
    10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
    11 ['Rain', 'Tom', 'Amy'] 
    12 >>> names[3:-1] #这样-1就不会被包含了
    13 ['Rain', 'Tom']
    14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
    15 ['Alex', 'Eric', 'Tom'] 
    16 >>> names[::2] #和上句效果一样
    17 ['Alex', 'Eric', 'Tom']
    18 >>> names[0:2][0:1]   #切片的基础上再次切片
    19 ['Alex']

       4、追加

    1 >>> names
    2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    3 >>> names.append("我是新来的")
    4 >>> names
    5 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

       5、删除

     1 >>> del names[2] 
     2 >>> names
     3 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     4 >>> del names[4]
     5 >>> names
     6 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
     7 >>> 
     8 >>> names.remove("Eric") #删除指定元素
     9 >>> names
    10 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
    11 >>> names.pop() #删除列表最后一个值 
    12 '我是新来的'
    13 >>> names
    14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    15 ##### 批量删除
    16 name = [9,9,9,9,34,5,6,7,34,34,9,9]
    17 for i in range(name.count(34)):
    18     name.remove(34)
    19 print(name)
    20 #输出
    21 [9, 9, 9, 9, 5, 6, 7, 9, 9]

      6、插入

    1 >>> names
    2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    3 >>> names.insert(2,"强行从Eric前面插入")
    4 >>> names
    5 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    6 
    7 >>> names.insert(5,"从eric后面插入试试新姿势")
    8 >>> names
    9 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

      7、修改 

     1 >>> names
     2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     3 >>> names[2] = "该换人了"
     4 >>> names
     5 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
     6 #####  批量修改
     7 name = [9,9,9,9,34,5,6,7,34,34,9,9]
     8 for i in range(name.count(9)):
     9     index = name.index(9)
    10     name[index] = 9999
    11 print(name)
    12 # 输出
    13 [9999, 9999, 9999, 9999, 34, 5, 6, 7, 34, 34, 9999, 9999]

      8、扩展

    1 >>> names
    2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    3 >>> b = [1,2,3]
    4 >>> names.extend(b)
    5 >>> names
    6 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

      9、copy

     1 import copy
     2 name = ["xx","xx","chh",[1,2,3,4],"hzh","cx","tongcf","zhangjie"]
     3 name3 = name.copy()            # 浅拷贝,只拷贝第二层嵌套列表的内存地址
     4 name4 = copy.deepcopy(name)    # 深拷贝,拷贝第二层嵌套列表的真实信息
     5 name[3][1] = 4444
     6 print("name:",name)
     7 print("name3:",name3)
     8 print("name4:",name4)
     9 #输出
    10 name: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']
    11 name3: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']
    12 name4: ['xx', 'xx', 'chh', [1, 2, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']

      10、统计

    1 >>> names
    2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
    3 >>> names.count("Amy")
    4 2

      11、排序和翻转

     1 >>> names
     2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
     3 >>> names.sort() #排序
     4 Traceback (most recent call last):
     5   File "<stdin>", line 1, in <module>
     6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
     7 >>> names[-3] = '1'
     8 >>> names[-2] = '2'
     9 >>> names[-1] = '3'
    10 >>> names
    11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    12 >>> names.sort()
    13 >>> names
    14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
    15 
    16 >>> names.reverse() #反转
    17 >>> names
    18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

      12、获取下标

    1 >>> names
    2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    3 >>> names.index("Amy")
    4 2 #只返回找到的第一个下标

       13、enumrate(为可迭代的对象添加序号)

    1 li = [11,22,33]
    2 for k,v in enumerate(li, 1):
    3     print(k,v)
    4 
    5 # 输出
    6 1 11
    7 2 22
    8 3 33

    二、元组

      1、元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。它只有2个方法,一个是count,一个是index,完毕。

    1 names = ("alex","jack","eric")

     

  • 相关阅读:
    很多网络库介绍
    CFileFind
    C#编写COM组件
    使用javascript调用com组件
    C++ 解析Json——jsoncpp
    休眠与开机自动运行等VC代码
    win7 vs2012/2013 编译boost 1.55
    VC中的字符串转换宏
    InstallShield 静默安装
    CAD版本 注册表信息
  • 原文地址:https://www.cnblogs.com/chhphjcpy/p/6062626.html
Copyright © 2011-2022 走看看