zoukankan      html  css  js  c++  java
  • python数据类型之列表

    列表定义

    列表是由一系列案特定顺序排列的元素组成。在python中,用方括号([])来表示,并用逗号来分隔其中的元素。

    names = ['Alex',"Tenglan",'Eric']
    

     列表访问

    • 列表元素的访问从索引0开始,而不是索引1开始。
    • 列表的索引可以是从负数开始。这种语法经常在需要在不知道列表长度的情况下访问元素。
    >> names[0]
    'Alex'
    >>> names[2]
    'Eric'
    >>> names[-1]
    'Eric'
    >>> names[-2] #还可以倒着取
    'Tenglan'
    View Code

    列表操作

    修改列表元素

    >>> names
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    >>> names[2] = "该换人了"
    >>> names
    ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    View Code

    添加列表元素

    • 从列表末尾添加,利用append方法。
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
    >>> names.append("我是新来的")
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    View Code
    • 从列表任意位置添加,利用insert方法。
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    >>> names.insert(2,"强行从Eric前面插入")
    >>> names
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    
    >>> names.insert(5,"从eric后面插入试试新姿势")
    >>> names
    ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    View Code

    删除列表元素

    • 利用“del”删除,删除的列表元素不能再使用。
    >>> del names[2] 
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
    >>> del names[4]
    >>> names
    ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
    >>> 
    View Code
    • 利用pop方法删除

    在pop方法中,默认是从列表末尾删除,但也可以给pop方法传参,参数表示列表的索引;利用pop方法弹出的列表元素可以被再次使用。

     1 >>>name = ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
     2 >>> names.pop() #删除列表最后一个值 
     3 '我是新来的'
     4 >>> names
     5 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
     6 
     7 >>> names.pop(2) #删除列表任意一个值 
     8 '我是新来的'
     9 >>> names
    10 ['Alex', 'Tenglan', 'Tom', 'Amy']
    View Code
    • 利用列表元素值删除

    使用remove方法实现。

    1 >>>name = ['Alex', 'Tenglan', 'Eric', 'Rain']
    2 >>>name.remove('Eric')
    3 ['Alex', 'Tenglan','Rain']
    View Code
    • 如果要从列表中删除一个元素,而这个元素不会再以任何方式使用,那么就用“del”删除,反之,用pop方法删除。
    • 方法remove只能删除第一个指定的元素。如果要删除的值在列表中存在多个,那么就要用循环去删除。

    列表排序

    • 永久性改变列表顺序

    利用sort方法实现。给sort方法的参数为“reverse=True”时,可以反向排序;排序的原则是按照字母顺序排序的。

    1 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    2 >>> names.sort()
    3 >>> names
    4 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
    5 
    6 >>> names.sorted(reverse=True) #反转
    7 >>> names
    8 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    View Code

    同样也可以利用reverse方法实现反转。

    1 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    2 >>> names.sort()
    3 >>> names
    4 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
    5 
    6 >>> names.reverse() #反转
    7 >>> names
    8 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
    View Code

    还需要注意的是,在python3中,不同数据类型是无法排序的

    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() 
    View Code
    • 保留原来列表的排列顺序

    利用sorted方法实现。跟sort方法同理,给sorted方法的参数为“reverse=True”时,可以反向排序。

    1 >>>names = ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    2 >>>print(sorted(names))
    3 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
    4 
    5 >>>print(names)
    6 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    View Code

    列表元素下表获取

    利用index方法实现。

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

    列表元素出现次数获取

    利用count方法实现

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

    获取列表长度

    利用len方法实现。需要注意的是,在计算列表长度时,是从1开始的。

    1 >>> names = ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
    2 >>> len(names)
    3 8
    View Code

    列表切片操作

    需要注意的是,“:”前面的索引表示起始位置,“:”后面的索引表示终止位置。

     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']
    View Code

    列表解析

    列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

    1 >>>s = [value**2 for value in range(1,5)]
    2 >>>print(s)
    3 [1, 4, 9, 16]
    View Code

    数值列表

    可以利用list方法和range方法,快速实现定义数值列表。

    1 >>>numbers = list(range(1,30,3))
    2 >>>print(numbers)
    3 [1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
    View Code

    可以利用max方法,min方法和sum方法,计算需要的值。

    1 >>>numbers = list(range(1,30,3))
    2 >>>print(numbers)
    3 >>>print(min(numbers))
    4 >>>print(max(numbers))
    5 >>>print(sum(numbers))
    6 [1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
    7 1
    8 28
    9 145
    View Code

     

  • 相关阅读:
    如何通過編程獲取列表項目的附件以及多行文本中的文件內容
    小技巧:如何管理保存在本地的用户凭据
    WF 4.0中如何实现xaml工作流的动态加载
    使用jquery构造自己的多级菜单
    和安蕾尔的合影
    360太tmd脑残了
    3D 打印机技术设想
    再放2张数字油画
    解决问题的艺术:半小时编程实现照片的反转负冲特效
    承接数字油画图稿/线条图定制(出图)业务
  • 原文地址:https://www.cnblogs.com/cjaaron/p/8658113.html
Copyright © 2011-2022 走看看