zoukankan      html  css  js  c++  java
  • 列表 元组

    一、列表

    1. 定义列表:

    变量 = [‘’,’’,’’,’’…….]

    列表中可以包含列表,为子列表

    2. 切片:取多个元素

    >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
    
    >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4
    
    ['Tenglan', 'Eric', 'Rain']
    
    >>> names[1:-1] #取下标1至-1的值,不包括-1
    
    ['Tenglan', 'Eric', 'Rain', 'Tom']
    
    >>> names[0:3] 
    
    ['Alex', 'Tenglan', 'Eric']
    
    >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
    
    ['Alex', 'Tenglan', 'Eric']
    
    >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
    
    ['Rain', 'Tom', 'Amy'] 
    
    >>> names[3:-1] #这样-1就不会被包含了
    
    ['Rain', 'Tom']
    
    >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
    
    ['Alex', 'Eric', 'Tom'] 
    
    >>> names[::2] #和上句效果一样
    
    ['Alex', 'Eric', 'Tom']

    3. 追加:

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

    4. 插入:

    >>> names
    
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    
    >>> names.insert(1,"新来的")
    
    >>> names
    
    ['Alex', '新来的', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']

    5. 修改:

    >>> names
    
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain' , 'Tom', 'Amy']
    
    >>> names[2] = "该换人了"
    
    >>> names
    
    ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', 'Tom', 'Amy ']

    6. 删除:

    1)

    >>> del names[2] #删除下标为2的元素
    
    >>> names
    
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

    2)

    >>> names.remove("Eric") #删除指定元素
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']

    3)

    >>> names.pop() #默认删除列表最后一个值,输入下标等同于del names[] 
    
    '我是新来的'
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']

    7. 扩展:

    >>> names
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
    
    >>> b = [1,2,3]
    
    >>> names.extend(b)
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    
    del b#删除变量b

    8. 拷贝:

    a) 浅copy:

    >>> names
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    
    1) 
    >>> name_copy = names.copy()
    
    >>> name_copy
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    
    2)
     >>>names[3] = ‘向鹏’ #names['Tom'] = ‘向鹏’ 报错,names[]必须写下标
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', '向鹏', 'Amy', 1, 2, 3]
    
    >>> name_copy
    
    ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', ['Tom', 'Amy'],'Tom', 'Amy', 1, 2, 3]
    
    3) 
    >>> names[3][0] = ‘tom’
    
    >>> names[4] = ‘向鹏’
    
    ['Alex', 'Tenglan', 'Rain', ['tom', 'Amy'], '向鹏', 'Amy', 1, 2, 3]
    
    >>> name_copy
    
    ['Alex', 'Tenglan', 'Rain', ['tom', 'Amy'],'Tom', 'Amy', 1, 2, 3]

    浅copy,只copy第一层,下一层指向原内存地址,可理解为:第一层独立copy一份,不是指向的第一层的内存地址

    第二个列表拷贝第一个列表,实际上第二个列表中的每个元素只是第一个列表每一个元素的引用

    浅copy三种实现方式:

    Import copy
    
    person = [‘name’,[‘saving’,100]]
    
    1) P1 = copy.copy(person)
    
    2) P2 = person[:]
    
    3) P3 = list(person)

    浅copy使用:

    i. 创建联合账号

    p1 = person[:]
    
    p2 = person[:]
    
    p1[0]=’alex’
    
    p2[0]=’fengjie’
    
    print(p1) ——>[‘alex’,[‘saving’,100]]
    
    print(p2) ——>[‘fengjie’,[‘saving’,100]]
    
    p1[1][1] = 50
    
    print(p1) ——>[‘alex’,[‘saving’,50]]
    
    print(p2) ——>[‘fengjie’,[‘saving’,50]]

    b) 深copy:

    import copy
    
    name_copy = copy.deepcopy(names)
    
    >>> name_copy
    
    ['Alex', 'Tenglan', 'Rain', ['Tom', 'Amy'],'Tom', 'Amy', 1, 2, 3]
    
    >>> names
    
    ['Alex', 'Tenglan', 'Rain', ['tom', 'Amy'], '向鹏', 'Amy', 1, 2, 3]

    9. 统计:

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

    10. 排序&翻转:

    排序:

    >>> names
    
    ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
    
    >>> names.sort() #排序
    
    Traceback (most recent call last):
    
    File "<stdin>", line 1, in <module>
    
    TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序
    
    >>> names[-3] = '1'
    
    >>> names[-2] = '2'
    
    >>> names[-1] = '3'
    
    >>> names
    
    ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    
    >>> names.sort()
    
    >>> names
    
    ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']

    翻转:

    >>> names.reverse() #反转
    
    >>> names
    
    ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

    11. 获取下标:

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

    12.

    1) 循环

    for i in names:
    
    print(i)#打印names列表

    2) 步长切片

    print(names[0:-1:2])
    
    print(names[::2])

    二、元组

    1. 元组一旦创建不能更改,只能查(切片),又叫只读列表

    2. 语法:

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

    它只有2个方法,一个是count,一个是index

  • 相关阅读:
    机械迷城MAC下载及攻略
    今晚是个难眠之夜
    div高度自适应
    代码高亮
    windows live writer
    Java连接redis的使用示例
    luogu4360 锯木厂选址 (斜率优化dp)
    poj1651 Multiplication Puzzle (区间dp)
    hdu3506 Monkey Party (区间dp+四边形不等式优化)
    poj1236/luogu2746 Network of Schools (tarjan)
  • 原文地址:https://www.cnblogs.com/sleeping-cat/p/9224398.html
Copyright © 2011-2022 走看看