• Python3学习之路~2.1 列表、元组操作


    列表

    列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

    定义列表(list)

    names=['Amy','Bob','Cindy','David']

    通过下标访问列表中的元素,下标从0开始计数,还可以倒着取

    >>> names[0]
    'Amy'
    >>> names[1]
    'Bob'
    >>> names[-1]
    'David'
    >>> names[-2]
    'Cindy'

    切片:取多个元素

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

    追加

    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank']
    >>> names.append("Serena")    #追加元素会放在列表的最后一个
    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
    View Code

    插入

    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
    >>> names.insert(2,'Olivia') #强行从Cindy前面插入
    >>> names
    ['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
    >>> names.insert(5,'Anna')
    >>> names
    ['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
    View Code

    修改

    >>> names
    ['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
    >>> names[2]='Tim'    #将Olivia修改为Tim
    >>> names
    ['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
    View Code

    删除

    >>> names
    ['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
    >>> del names[2]
    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
    >>> del names[4]
    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
    >>> names.remove("David")    #删除指定元素
    >>> names
    ['Amy', 'Bob', 'Cindy', 'Eric', 'Frank', 'Serena']
    >>> names.pop()    #删除列表最后一个值 
    'Serena'
    >>> names
    ['Amy', 'Bob', 'Cindy', 'Eric', 'Frank']
    >>> names.pop(1)    #删除列表第二个值 
    'Bob'
    >>> names
    ['Amy', 'Cindy', 'Eric', 'Frank']
    >>> names.clear()    #清空列表
    >>> names
    []
    >>> del names    #删除列表
    >>> names
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'names' is not defined
    View Code

    扩展

    >>> names=['Amy','Bob','Cindy','David','Eric','Frank']
    >>> b=[1,2,3]
    >>> names.extend(b)
    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 1, 2, 3]
    View Code

    拷贝

    >>> import copy
    >>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
    >>> names_copy_1=names.copy()    #浅拷贝,只拷贝第一层,可以看做拷贝了第二层的内存地址
    >>> names_copy_2=names    #names_copy_2和names完全一致,names修改,names_copy_2也跟着修改
    >>> names_copy_3=copy.copy(names)    #浅拷贝,与names.copy()效果完全一致
    >>> names_copy_4=names[:]    #完全切片的形式创建浅拷贝,与names.copy()效果完全一致
    >>> names_copy_5=list(names)    #工厂函数的形式创建浅拷贝,与names.copy()效果完全一致
    >>> names_copy_6=copy.deepcopy(names)    #深拷贝,names_copy与names完全独立
    >>> names
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_1
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_2
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_3
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_4
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_5
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names_copy_6
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    >>> names[2]="森碟"
    >>> names[3][0]="DAVID"
    >>> names
    ['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_1
    ['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_2
    ['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_3
    ['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_4
    ['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_5
    ['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
    >>> names_copy_6
    ['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
    View Code
    >>> person=['name',['money',100]]
    >>> p1=person[:]
    >>> p2=person[:]
    >>> p1[0]='husband'
    >>> p2[0]='wife'
    >>> p1[1][1]=50
    >>> p1
    ['husband', ['money', 50]]
    >>> p2
    ['wife', ['money', 50]]
    >>>
    浅拷贝应用:比如创建联合账号,夫妻二人共同财产100元,丈夫花了50元,则丈夫妻子的共同财产均只剩下50元

    统计

    >>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
    >>> names.count("Amy")
    2
    View Code

    排序&反转

    >>> names
    ['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
    >>> names.sort()    #排序
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: '<' not supported between instances of 'int' and 'str'    #3.0里不同数据类型不能放在一起排序了
    >>> names[-3]='1'
    >>> names[-2]='2'
    >>> names[-1]='3'
    >>> names.append('#')
    >>> names.append('bob')
    >>> names.append('amy')
    >>> names
    ['1', '2', '3', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', '#', 'bob', 'amy']
    >>> names.sort()    #按照ASCII码顺序排序,一般顺序为:特殊字符、数字、大写字母、小写字母
    >>> names
    ['#', '1', '2', '3', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'amy', 'bob']
    >>> names.reverse()    #反转
    >>> names
    ['bob', 'amy', 'Frank', 'Eric', 'David', 'Cindy', 'Bob', 'Amy', 'Amy', '3', '2', '1', '#']
    View Code

    获取下标

    >>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
    >>> names.index("Amy")    #只返回找到的第一个下标
    0
    View Code

    列表循环

    >>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
    >>> for i in names:
    ...     print(i)
    ...
    Amy
    Bob
    Cindy
    ['David', 'Eric']
    Frank
    View Code

     列表循环取出元素以及下标

    >>> list=['a','b','c']
    >>> for item in list:
    ...     print(list.index(item),item)    #方法1
    ...
    0 a
    1 b
    2 c
    >>> for i in enumerate(list):
    ...     print(i)    #方法2
    ...
    (0, 'a')
    (1, 'b')
    (2, 'c')
    >>> for index,item in enumerate(list):
    ...     print(index,item)    #方法3
    ...
    0 a
    1 b
    2 c
    View Code

     其他

    >>> names=['Amy','Bob','Cindy','David']
    >>> 'Amy' in names #判断一个值是否在列表中,列表、元组、字符串、字典、集合均如此操作
    True
    >>> Alex in names
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'Alex' is not defined
    View Code

    元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

    定义元组(tuple)

    names=('Amy','Bob','Cindy','David')

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

    >>> names=('Amy','Bob','Cindy','Amy','David')
    >>> names.count('Amy')    #统计
    2
    >>> names.index('Amy')    #获取下标,只返回找到的第一个下标
    0
  • 相关阅读:
    sql 生成开始日期到结束日期相差天数或日期
    自定义表做存储过程变量
    [转]html 移动互联网终端的javascript touch事件,touchstart, touchend, touchmove
    [转]JQuery.Ajax之错误调试帮助信息
    解决IOS safari在input focus弹出输入法时不支持position fixed的问题
    查看 存储过程的执行时间
    ListView
    android矩阵详解
    跳出圈子 “莫忘初心,方得始终”
    Eclipse使用
  • 原文地址:https://www.cnblogs.com/zhengna/p/9155550.html
Copyright © 2020-2023  润新知