Python列表操作

1,列表的基本操作
1.2修改列表,给元素赋值
修改列表使用索引表示法给特定位置的元素赋值,如x[1] = 2

x= [1,1,1]
x[1] = 2
x
[1, 2, 1]
1.3删除元素
使用del加上列表索引进行删除。

names = [‘Alice’, ‘Beth’, ‘Cecil’, ‘Dee-Dee’, ‘Earl’]
del name
del names[2]
names
[‘Alice’, ‘Beth’, ‘Dee-Dee’, ‘Earl’]
1.4给切片赋值

names = [‘Alice’, ‘Beth’, ‘Cecil’, ‘Dee-Dee’, ‘Earl’]
del name
name names

del names[2]
names
[‘Alice’, ‘Beth’, ‘Dee-Dee’, ‘Earl’]

从上面的代码可以看出,可以同时给多个元素赋值。

number = [1,5]
number[1:1] = [2,3,4]
number
[1, 2, 3, 4, 5]
这里相当于替换了一个空切片number[1:1],等同于插入了一个序列。也可以通过相反的操作类删除切片。

上面的代码与del numbers[1:4]等效

1.5函数list

函数list,使用字符串来创建列表

list(‘Hello’)
[‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
可将任何序列作为list的参数。

2,列表方法

方法是与对象(列表、数、字符串)联系紧密的函数,通常的调用方法是:object.method(arg)
其中arg为参数。
2.1 append
方法append用于将一个对象附加到列表末尾。

lst = [1, 2, 3]
lst.append(4)
lst
[1, 2, 3, 4]
这里注意:list是一个内置函数,所以列表命名是应尽量避免使用list直接命名。
2.2 clear
方法clear就地清空列表内容。

lst = [1,2,3]
ls
lst
lst.clear()
lst
[]
类似于切片赋值语句lst[:] = []
2.3 copy
方法copy复制列表,常规复制只是将另一个名称关联到列表。

a = [1,2,3]
b = a
b[1] = 4
a
[1, 4, 3]
注意这里只是将b关联到列表a,对b的所有操作都会引起a 的变化。
要让a和b指向不同的列表,就必须将b关联到a的副本。

a = [1,2,3]
b = a.copy()
b[1] = 4
a
[1, 2, 3]

b
[1, 4, 3]
这里才是创建了两个列表 b = a.copy() 相当于 b = a[:]或者 b = list(a)对a进行复制。

2.4 count
方法count计算指定元素的列表中出现的次数

[‘to’, ‘be’, ‘or’, ‘not’, ‘to’, ‘be’].count(‘to’)
2
计算to在类表中出现的次数。

x = [[1, 2], 1, 1, [2, 1, [1, 2]]]
x.count(1)
2

x.count([1, 2])
1

x[3].count([1, 2]) 统计x类表中第4个元素出现列表[1, 2]的次数
1

2.5 extend
方法extend能够同时将多个值附加到列表末尾,可将这些值组成的序列作为参数提供给方法extend,换言之,可以使用一个列表类扩展另一个列表。

a = [1,2,3]
b = [4,5,6]
a.extend(b) 将列表b作为参数提供给extend方法。
a
[1, 2, 3, 4, 5, 6] 这里a的值已经改变。

这类似于拼接,但稍有不同的是:拼接并不会改变原来列表的值。
a = [1,2,3]
b
[4, 5, 6]
a + b
[1, 2, 3, 4, 5, 6]
a
[1, 2, 3] 这里并没有改变列表a的值

2.6 index
方法index在列表查找指定值第一次出现的索引。

knights = [‘we’, ‘are’, ‘the’, ‘knigts’, ‘who’, ‘say’, ‘ni’]
knights.index(‘who’)
4

如果没有就会报错。

knights.index(‘xr’)
Traceback (most recent call last):
File “”, line 1, in
ValueError: ‘xr’ is not in list

2.7 insert
方法insert用于将一个对象插入列表。

numbers = [1,2,3,5,6,7]
numbers.insert(3, ‘four’) 注意这里必须是两个参数,第一个是插入的位置,第二个 是值
numbers
[1, 2, 3, ‘four’, 5, 6, 7]

2.8 pop
方法pop是从列表中删除一个元素(末尾为最后一个元素),并返回这一元素。

x = [1,2,3]
x.pop()
3

x
[1, 2]

x.pop(0)
1

x
[2]

使用pop可实现一种常见的数据结构------栈(stack)。栈就是叠盘子,可以在上面添加盘子,也可以从上面取走盘子,最后添加的盘子最先被取走,称为后进先出(LIFO)
Push和pop是两种栈操作。Python没有提供push,可使用append来替代。方法pop和append的效果相反。

x = [1,2,3]
x.append(x.pop())
x
[1, 2, 3]

x.append(x.pop(1)) # pop取出第2个元素2后,被append加到列表后面了。
x
[1, 3, 2]
方法pop修改列表且会返回值。
2.9 remove
方法remove用于删除第一个为指定值的元素,第二个第三个等都不会删除。
x = [‘to’, ‘be’, ‘or’, ‘not’, ‘to’, ‘be’]
x.remove(‘be’)
x
[‘to’, ‘or’, ‘not’, ‘to’, ‘be’] #只删除第一个匹配到的值。

方法remove修改列表且不返回值。
2.10 reverse

方法reverse按相反的顺序排列列表中的元素。不会返回任何值。

x = [1,2,3]
x.reverse()
x
[3, 2, 1]
也可以使用函数reversed,这个函数返回的迭代器,可以使用list将返回的迭代器转换为列表。

x
[1, 2, 3]

list(reversed(x))
[3, 2, 1]

2.11 sort
方法sort用于对列表排序,意味着对原来的列表进行了修改。

x = [4,7,2,5,8,1,3]
x.sort()
x
[1, 2, 3, 4, 5, 7, 8]

由于sort不返回任何值,因此常见的错误如下:

x = [4,7,2,5,8,1,3]
y = x.sort() #x.sort()不返回任何值,所以y是空的。
y
None

正确的方法是先将y关联到x的副本,再对y进行排序。

x = [4,7,2,5,8,1,3]
y = x.copy()
y.sort()
x
[4, 7, 2, 5, 8, 1, 3]

y
[1, 2, 3, 4, 5, 7, 8]

注意:这里将x赋值给y也是不行的,因为这样的话x和y会指向同一个列表。

这里可以使用函数sorted,该函数会返回一个列表,可以赋值给y

x = [4,7,2,5,8,1,3]
y = sorted(x) 该函数会返回一个列表,可以赋值给y
x
[4, 7, 2, 5, 8, 1, 3]

y
[1, 2, 3, 4, 5, 7, 8]

2.12 高级排序
方法sort有两个可选参数:key和reverse。这两个单数通常是按名称指定的,称为关键字参数。例:根据长度对元素进行排序。可将参数设置为函数len。

x = [‘aardsfgew’, ‘abcdefg’, ‘iopl’, ‘yut’, ‘create’]
x.sort(key=len)
x
[‘yut’, ‘iopl’, ‘create’, ‘abcdefg’, ‘aardsfgew’]
对于另外一个参数reverse,只需要将其指定一个真值,以表示是否要按照相反的顺序对列表经行排序。

x = [4,7,2,5,8,1,3]
x.sort(reverse = True) sort是从小到大进行排序,reverse将结果翻转过来。
x
[8, 7, 5, 4, 3, 2, 1]
Reverse = False是什么结果?结果就是从小到大进行排序。而不是不排序。

x = [4,7,2,5,8,1,3]
x.sort(reverse = False) # reverse = False意思是不翻转。
x
[1, 2, 3, 4, 5, 7, 8]

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页