Python基础与拾遗3:Python中的列表

Python基础与拾遗3:Python中的列表

  • 列表相关定义
  • 列表相关操作

本篇博文,主要总结Python中的列表及相关操作。

列表相关定义

  1. 列表是任意对象的有序集合,可存放任意对象。
a = [1, 2, 3, 4, 5]
a = [1, "2", 3, "4", 5]
a = [1, {
     "a":2, "b":3}, 3, "4", 5]
  1. 列表通过偏移进行读取。
a = [1, {
     "a":2, "b":3}, 3, "4", 5]
a[1] # {'a': 2, 'b': 3}
a[-1] # 5
a[5] # IndexError: list index out of range
  1. 列表支持可变长度、异构以及任意嵌套。列表可以实地地增长或者缩短,包含任意对象,可以创建列表的子列表。
a = [1, 2, 3, 4, [5, 6, 7, 8]]
  1. 列表是序列。支持原处修改,索引,分片与合并。当应用与字符串上的合并与分片时,返回新的列表。
a = [1, 2, 3, 4, 5, 6, 7, 8]
b = [-1, -2, -3, -4, -5, -6, -7, -8]
a[0] = 9 # [9, 2, 3, 4, 5, 6, 7, 8]
a[0] # 9
c = a[3:] # [4, 5, 6, 7, 8]
d = a[:5] # [9, 2, 3, 4, 5]
e = a[2:4] # [3, 4]
f = a[2:6:2] # [3, 5]
g = a[:] # [9, 2, 3, 4, 5, 6, 7, 8]
g == a # True
g is a # False
a + b # [9, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8]
  1. 列表是对象引用数组。在Python解释器内部,列表是一个C数组。在列表中,对象是引用(改变对象的话,对象直接会改变)而不是拷贝。

列表相关操作

列表相关操作总结列表如下表所示。

操作 解释
L=[] 一个空的列表
L=[0,1,2,3] 建立数字列表
L=[‘abc’, [‘def’,‘ghi’]] 建立嵌套的子列表
L=list(‘spam’) 建立可迭代项目列表,里面是一个字符串
L=list(range(-4,4)) 建立连续整数的列表
L[i] 索引
L[i][j] 索引的索引
L[i:j] 分片
len(L) 求长度
L1 + L2 合并
L * 3 重复
for x in L: print(x) 迭代打印
3 in L 成员关系判断
L.append(4) 添加元素
L.extend([5, 6, 7]) 增长
L.insert(I, X) 在I位置插入元素X
L.Count(X) 对元素X计数
L.sort() 排序
L.reverse() 反转
del L[k] 删除指定位置元素
del L[i:j] 删除指定区间元素
L.pop() 删除(默认最后的)元素
L.remove(2) 删除第一个为2的元素
L[i:j]=[] 删除指定区间的元素
L[i]=1 按照索引赋值
L[i:j]=[4,5,6] 按照分片赋值
L = [x ** 2 for x in range(5)] 列表解析(求平方)
list(map(ord, ‘spam’)) 列表解析(转ascii)
  1. “+”两侧必须都是列表,表示合并操作。
  2. 在对列表进行分片时,返回新的列表,参见本篇博文之前的用例。
  3. 在原处修改列表时,通过分片操作赋值,被赋值的序列长度不一定要与被赋值的分片长度相似。这一点可以被灵活地用来减短或增长列表。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
a[2:5] = [3] # [0, 1, 3, 5, 6, 7, 8]
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
a[2:5] = [11, 22, 33, 44, 55, 66] # [0, 1, 11, 22, 33, 44, 55, 66, 5, 6, 7, 8]
  1. 在方法调用中,L.append(X)与L+[X],前者会原地修改L,后者会直接生成新的列表
  2. append和sort方法调用都不会返回一个新的列表
  3. sort方法可以用key指定一个函数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print '排序列表:', random

# 程序运行输出:
# 排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
  1. pop方法,可以删除一个元素。
    extend方法,可以插入多个元素(直接extend一个列表)。reverse方法反转列表。
    remove方法删除第一个查找到的元素。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
a.pop() # 返回8,a现在为[0, 1, 2, 3, 4, 5, 6, 7]
a.extend([11, 22, 33, 44, 55]) # [0, 1, 2, 3, 4, 5, 6, 7, 11, 22, 33, 44, 55]
a.reverse() # [55, 44, 33, 22, 11, 7, 6, 5, 4, 3, 2, 1, 0]
a.remove(44) # [55, 33, 22, 11, 7, 6, 5, 4, 3, 2, 1, 0]
  1. sorted和reserved方法会返回新的列表。但是reserved方法是一个迭代器,所以返回新的列表时需要加上list()。
a = [1, 6, 2, 3, 7, 8, 4, 9]
b = sorted(a) # [1, 2, 3, 4, 6, 7, 8, 9]
c = reversed(a) # 
c = list(reversed(a)) # [9, 4, 8, 7, 3, 2, 6, 1]
  1. 将空列表赋值给分片,可以删除一个片段。将空列表赋值给索引,只会将指定位置的元素替换成一个空列表。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
a[1:5] = [] # [0, 5, 6, 7, 8]
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
a[1] = [] # [0, [], 2, 3, 4, 5, 6, 7, 8]

以上,欢迎各位读者朋友提出意见或建议。

欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!

written by jiong
大王叫我来巡山,
我把人间转一转。

你可能感兴趣的:(基础拾遗,Python,列表,python,计算机视觉,人工智能,大数据)