• Python 学习 第三篇:数据类型(列表)


    列表和字段都可以在原处进行修改,可以按照需求增长或缩短,并且可以包含任何类型的对象或被嵌套。列表和字典存储的是对象的引用,而不是拷贝。

    一,列表

    列表是有序的序列,每一个列表项的顺序是固定的,这使得列表可以通过指定的偏移来索引和分片。列表是可变的序列,支持在原处修改。

    列表项可以是任何类型,或对象,也可以嵌套列表。

    1,列表的创建

    创建一个空的列表:

    >>> l=[]

    创建一个纯数字列表:

    >>> l=[1,2,3]

    创建一个数字和字符的混合类型列表:

    >>> l=[1,2,'a']

    创建一个嵌套对象的列表:

    >>> l=[1,'a',[2,'b']]
    >>> l
    [1, 'a', [2, 'b']]

    创建一个范围列表:

    range() 函数用于创建一个整数列表,range函数语法:

    range(start, stop[, step])

    参数说明:

    • start: 计数从 start 开始,默认是从 0 开始。例如range(5)等价于range(0, 5);
    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

    使用range函数创建一个范围列表:

    >>> list(range(1,10,2))
    [1, 3, 5, 7, 9]

    2,列表解析

    使用列表解析,可以使用迭代器来生成列表:

    >>> l=[x**2 for x in range(0,5)]
    >>> l
    [0, 1, 4, 9, 16]

    3,列表的索引和分片

    列表和字符串都是有序的序列,它们的索引和分片的格式很相似:

    • l[i]:索引单个列表项
    • l[i][j]:如果列表项是序列,那么可以使用多重索引
    • l[i:j]:对列表分片

    例如:对列表进行索引和分片

    >>> l=[1,'a',[2,'b']]
    >>> l[1]
    'a'
    >>> l[2]
    [2, 'b']
    >>> l[2][1]
    'b'
    >>> l[0:2]
    [1, 'a']

    二,列表操作

    列表的长度是固定的,不能越界访问列表,列表的最大索引是列表长度-1,越界会导致Python报错。

    1,追加

    向列表的末尾追加一个列表项: list.append(obj)

    >>> l.append(4)
    [1, 'a', [2, 'b'], 4]

    向列表的末尾追加一个序列: list.extend(seq)

    >>> l.extend([3,5])
    [1, 'a', [2, 'b'], 4, 3, 5]

    2,插入

    向列表的特定位置插入一个列表项:list.insert(index,obj)

    >>> l.insert(2,'b')
    [1, 'a', 'b', [2, 'b'], 4, 3, 5]

    3,移除列表项

    根据索引来删除列表中的元素,list.pop(index=-1),返回的是删除的列表项:

    >>> l.pop(2)
    'b'
    >>> l
    [1, 'a', [2, 'b'], 4, 3, 5]

    根据索引来删除列表项,可以使用 del 命令来删除指定索引的列表项: del list[index]

    >>> del l[5]
    [1, 'a', [2, 'b'], 4, 3]

    根据元素值来删除列表的元素,可以使用 list.remove(obj)函数, 从列表中删除值是obj的元素:

    >>> l.remove(3)

    4,修改列表项

    由于列表是可变的,支持原处修改列表项,也就是说,可以通过索引直接修改列表对象。

    >>> l[4]=l[4]+2
    >>> l
    [1, 'a', [2, 'b'], 4, 5]

    5,对列表进行排序:list.sort()

     当列表项具有可比性时,可以对列表进行排序,list.sort(reverse=False),

    • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
    >>> sl=['a','c','e','d']
    >>> sl.sort()
    >>> sl
    ['a', 'c', 'd', 'e']

    6,查看某一元素的索引 list.index(obj)

    从列表中找出某个值第一个匹配项的索引位置

    >>> l.index(5)
    4

    7,列表的其他操作

    • 统计列表元素的数量:len(list)
    • 列表的合并:list1+list2,生成新的列表
    • 列表的重复:list*2,等价于 list+list,生成新的列表
    • 列表的迭代: obj in list

    +和* 会生成新的列表,而list.append(),list.sort(),list.xxx()等函数和del list[i]是在原处修改,不会生成新的列表。

     

    参考文档:

  • 相关阅读:
    HDU 2433 Travel (最短路,BFS,变形)
    HDU 2544 最短路 (最短路,spfa)
    HDU 2063 过山车 (最大匹配,匈牙利算法)
    HDU 1150 Machine Schedule (最小覆盖,匈牙利算法)
    290 Word Pattern 单词模式
    289 Game of Life 生命的游戏
    287 Find the Duplicate Number 寻找重复数
    283 Move Zeroes 移动零
    282 Expression Add Operators 给表达式添加运算符
    279 Perfect Squares 完美平方数
  • 原文地址:https://www.cnblogs.com/ljhdo/p/4907733.html
Copyright © 2020-2023  润新知