Python列表

Posted zhouzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python列表相关的知识,希望对你有一定的参考价值。

获取列表元素

下标取值,下标从0开始:

spam = ['cat', 'bat', 'rat', 'elephant']
print(spam[0])  # cat
print(spam[1])  # bat
print(spam[2])  # rat
print(spam[3])  # elephant

负数下标

整数值-1指的是列表中最后一个下标,-2指的是倒数第二个下标。

获取列表长度

spam = ['cat', 'dog', 'moose']
print(len(spam))

获取子列表

spam = ['cat', 'bat', 'rat', 'elephant']
print(spam[2:3])  # ['rat']
print(spam[2:])   # ['rat', 'elephant']
print(spam[:2])   # ['cat', 'bat']

截取子列表时,下表从0开始,左开右闭

连接列表

使用 + 连接列表:

spam = [1, 2, 3] + ['A', 'B', 'C']
print(spam)  # [1, 2, 3, 'A', 'B', 'C']

删除列表元素

spam = ['cat', 'bat', 'rat', 'elephant']
del spam[2]
print(spam)

遍历列表

spam = ['cat', 'bat', 'rat', 'elephant']
for val in spam:
    print(val)

表中被删除值后面的所有值,都将向前移动一个下标

判断一个值是否在列表中

spam = ['cat', 'bat', 'rat', 'elephant']
print('cat' in spam)       # True
print('dog' in spam)       # False
print('bat' not in spam)   # False

获取指定值的下标

spam = ['cat', 'bat', 'rat', 'elephant', 'rat']
print(spam.index('rat'))  # 2
print(spam.index('dog'))  # ValueError: 'dog' is not in list

如果值不在列表中,报错ValueError,如果值存在列表中,返回它的下标,如果存在重复值,返回第一次出现的下标。

向列表中插入值

spam = ['cat', 'dog', 'bat']
spam.append('moose')
print(spam)  # ['cat', 'dog', 'bat', 'moose']
spam.insert(1, 'chicken')
print(spam)  # ['cat', 'chicken', 'dog', 'bat', 'moose']

使用remove方法从列表中删除值

spam = ['cat', 'dog', 'bat', 'dog']
spam.remove('dog')
print(spam)             # ['cat', 'bat', 'dog']
spam.remove('chicken')  # ValueError: list.remove(x): x not in list

给remove方法传入一个值,如果列表中存在,它将会从被调用的列表中删除,如果列表中存在多个相同值,删除第一次出现的值,如果列表中不存在,报错ValueError。

列表排序

spam = ['ants', 'cats', 'dogs', 'badgers', 'elephants']
spam.sort()              # 默认排序,从小到大
print(spam)
spam.sort(reverse=True)  # 逆序排序
print(spam)
spam.sort(key=str.lower) # 排序时不区分大小写

数值列表或字符串列表可以使用sort方法排序,数值字符串混合列表调用sort方法,python2可以执行,python3报错TypeError。

深拷贝

将列表变量赋值给另一个变量,实际上是将列表的引用赋值给了该变量,要对列表进行深拷贝,可以使用copy模块。

import copy

spam = ['A', 'B', 'C', 'D']
cheese = copy.copy(spam)        # 深拷贝

spam2 = ['A', 'B', 'C', ['D', 'E']]
cheese2 = copy.deepcopy(spam2)  # 如果要拷贝的列表包含了列表,使用deepcopy

元组与列表的区别

元组输入时用(),列表用[]

元组是不可变的,不能让它们的值被修改、添加或删除

如果元组只有一个值,在括号内该值的后面跟上一个逗号,表明这是一个元组

eggs = ('hello', 42, 0.5)
print(eggs[0])    # 'hello'
print(eggs[1:3])  # (42, 0.5)

以上是关于Python列表的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第25篇):将多行字符串拆分成列表

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第13篇):检测列表中的元素是否都一样

30 段 Python 实用代码

python常用代码

Python代码阅读(第41篇):矩阵转置