python列表(list)

一、概念

列表是一种有序的集合,是一段连续的内存空间。列表是python序列中的一种,是一种基本的数据结构。列表和元祖不同,列表是可变序列。

二、创建

列表有四种创建方式:

  1. 使用一对方括号来表示空列表: []
  2. 使用方括号,其中的项以逗号分隔: [1, 2, ‘3’]
  3. 使用列表推导式: [x for x in iterable]
  4. 使用类型的构造器: list() 或 list(iterable)
>>> list1 = []; 
[]
>>> list2 = [1,2,'3']
[1,2,'3']
>>> list3 = [i for i in range(1,4)]
[1,2,3]
>>> list4 = list()
[]
>>> list5 = list(range(1,4))
[1,2,3]
注:如果使用 list(iterable) 这种方式创建列表,而 iterable 是一个字典的话,得到的是字典的 键 的集合。
>>> list6 = list({'a':1,'b':2})
['a', 'b'] 

三、方法

列表实现了所有一般和可变序列的操作。

1、列表的常用方法:
方法描述
len(list)列表长度
[‘a’,‘b’] + [‘c’]两个列表组合为一个列表,结果为:[‘a’,‘b’,‘c’]
[‘a’]*2重复列表的元素组成一个新的列表结果:[‘a’,‘a’]
‘a’ in [‘a’,‘b’,‘c’]判断a元素是否存在于[‘a’,‘b’,‘c’],结果:True
max(list)返回列表元素最大值
max(list)返回列表元素最大值
list.append(x)在列表末尾添加元素x
list.extend(iterable)用可迭代对象的元素扩展列表
list.insert(i,x)指定位置插入元素,第一个参数是索引
list.remove(x)从列表中删除第一个值为x的元素,未找到触发ValueError 异常。
list.pop([i])删除列表的指定位置的元素,并返回被删除的元素,未指定位置则删除并返回列表的最后一个元素
list.clear()删除列表里的所有元素,相当于 del a[:]
list.index(x[,start[,end]]返回列表中第一个值为 x 的元素的零基索引。未找到指定元素时,触发 ValueError 异常。可选参数 start 和 end 是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是 start 参数。
list.count(x)返回元素x出现的次数
list.sort(*, key=None, reverse=False)排序列表中的元素,接收仅限以关键字形式传入的两个参数,key指定带有一个参数的函数,reverse表示是否反向排序
list.reverse()反转列表中的元素
list.copy()返回回列表的浅拷贝。相当于 a[:]
2、列表推导式:

列表推导式在逻辑上相当于一个循环,只是形式上更加简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

[表达式 for 变量 in 序列或迭代对象 判断条件]

比如,创建一个平方列表:

# 直接用 for 循环,
>>> squs = [];
>>> for i in range(0,10):
        squs.append(i**2)
>>> squs
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 这二种方式会有一个副作用,循环结束之后 i 还在
>>> i
9
# 使用构造器加 map 函数和 lambda 也可以完成
>>> squs = list(map(lambda x: x**2, range(10)))
>>> squs
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 使用列表推导式
>>> squs = [x**2 for x in range(10)
>>> squs
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81
可以看到使用列表推导式是最简洁的。

列表推导式可以添加判断,如下:

# 使用如下方式得到0-9(包含9)的正整数里面3的倍数的数字的平方的集合
>>> l = [i**2 for i in range(10) if i % 3 == 0]
>>> l
[0, 9, 36, 81]

和 for 循环一样,列表推导式也可以多层循环:

>>> l = [x*y for x in ['a', 'b', 'c'] for y in [1, 2, 3]]
>>> l
['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'c', 'cc', 'ccc']

等价于:

>>> l = []
>>> for x in ['a', 'b', 'c']:
        for y in [1, 2, 3]:
            l.append(x*y)
 >>> l
['a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'c', 'cc', 'ccc']

因为列表推导式中的初始表达式可以是任何表达式,甚至可以是另一个列表推导式。所以列表推导式还可以嵌套使用。

例如:

# 转置行列
>>> l = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> result = [[v[i] for v in l] for i in range(4)]
>>> result
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]
等价于:
>>> result = [[v[0] for v in l],[v[1] for v in l],[v[2] for v in l],[v[3] for v in l]]
>>> result
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]

也等价于:

>>> result = []
>>> for i in range(4):
        result.append([v[i] for v in l])
>>> result 
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]

总之,列表推导式是个好东西啊。

四、后记

上面都是我对python列表的一些理解,本人也是初学python,如果有什么不对的地方希望大家指正。谢谢_!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风云长轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值