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) # <list_reverseiterator object at 0x0000029D17861EB0>
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
大王叫我来巡山,
我把人间转一转。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值