Python基础——核心数据类型_序列_列表

序列方法

len
+
*
索引

索引值必须在序列边界内,否则会引发错误
赋值
元素赋值x[i] =

分片

索引值超出边界可以工作,Python会自动缩放超出边界的分片使其可用,比如l[3:1]会被缩放成l[3:3],l[-100:3]会被缩放成l[0:3]
分片赋值
比较厉害的是分片赋值的序列可以和将要覆盖的序列不等长。所以虽然是赋值操作,但也可以实现插入、删除操作。比如覆盖的序列是空序列[2:2],那么就是插入;要赋的序列是空序列,对应着删除。但是在实际中并不常见。

列表方法:

append

append(x)
在列表后添加元素,修改原来的列表,返回None。

extend

extend(list)
在列表后面添加list的所有元素,修改原有列表。

insert

insert(pos, x)
将元素x插入pos对应的位置。修改原有列表。

remove

remove(x)
删除列表中第一个值为x的元素。修改原有列表。

pop

pop()
从列表中删除一个元素并返回该元素的值,默认是最后一个元素, a.pop(), a.pop(2)。利用pop方法和append方法可以实现栈,利用pop和insert可以实现队列。注意。pop是唯一一个修改元列表并有返回值的方法。修改原有列表。

reverse

reverse()
将原来的列表倒序操作。修改了原有列表。
内置函数reversed(listname),也可以,但返回的是一个迭代器对象。需要list(reversed(listname))

sort

sort(key, reverse=False)
对原有列表进行递增排序,修改了原有列表,返回None值。可以通过传入关键字来修改排序行为:key参数给出了一个单个参数的函数,返回在排序中使用的值。

>>>list = ['abc', 'ABD', 'aBe']
>>>list.sort()
['ABD', 'aBe', 'abc']
>>>list.sort(key=str.lower)
['abc', 'ABD', 'aBe']
>>>list.sort(key=str.lower, reverse=True)
['aBe', 'ABD', 'abc']

内置函数sorted(listname, key, reverse=False)也可以实现列表的排序,参数可以是任何序列,但生成新列表,而不是在原处修改。sort可以接受自定义的比较函数作为参数。这在C++中对应函数谓词(不知道是不是这个名字),这是高级排序的内容,碰到的时候回来细说。

count

count(x)
统计元素x在列表中出现的次数。

index

index(x)
找到列表中匹配元素x的第一个索引位置。

列表解析

列表解析表达式是关于列表的高级操作。列表解析是写在[]中的,而且有使用同一变量名的表达式和循环结构组成。

[row[1] for row in M if row[1] % 2 == 0]
[(x, y) for x in range(5) if x%2==0 for y in range(5) if y%2==1]

可以看出列表解析表达式和map函数很相似,不同之处在于列表解析对序列中的每个元素应用表达式,而map函数对序列中的每个元素应用一个函数。列表解析比map调用快。

其他

list函数

将参数转换成列表形式。如list("hello") ----> ['h', 'e', 'l', 'l', 'o']

join方法

如果想要把由字符组成的列表转换成字符串,就要用到join函数,"".join(['h', 'e', 'l', 'l', 'o'])

del删除

del语句实现原处删除元素或片段:

>>>age = [10, 20, 30]
>>>del age[2]
>>>age
[10, 20]

del语句删除的是变量的名字,以及引用关系,并没有删除值本身。python是没有办法删除值的,当某个值不再使用时,python解释器负责内存的回收。

zip

zip(list1, list2)

可以传入任意的序列对象,一般用于并行循环中。

对列表中所有元素进行计数并找到最常见的几个元素
>>>from collections import Counter
>>>x = [1, 2, 3, 1, 1, 2]
>>>count = Counter(x)
>>>count.most_common(2)#出现次数最多的两个元素值及对应的次数
[(1, 3), (2, 2)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值