PythonNewHere--Python列表与元组基本函数与操作

来源:互联网 发布:keras 安装 windows 编辑:程序博客网 时间:2024/05/17 03:13

===============================================

列表的基本操作

本章的代码:https://github.com/Fu4ng/PythonNewHere/blob/master/L02.py

list函数

因为字符串不能像列表一样被改变,所以有时根据字符串创建列表会很有用。list函数就可以实现这个功能。
把一个序列作为参数,转换成列表

list('hello')
['h','e','l','l','o']

列表可以使用所有使用于序列的基本操作,例如索引,分片,连接和乘法。有趣的是列表是可以修改的。

1.改变列表:元素赋值

x = [1,1,1]x[1] = 2print(x)
[1,2,1]

2.删除元素

使用del语句来说实现

x = [1,2,6,3,4,5]del x[2]print(x)
[1,2,3,4,5]

删除的6是彻底消失的,而且列表的长度也从6变成5

3.分片赋值

name = list('perl')name[2:] = list('ython')print(name)
['p','y','t','h','o','n']

分片赋值语句在不需要替换任何原有元素的情况下插入新的元素
所以,用分片赋值的办法来删除元素 可是可信的

x = [1,3,3,3,2]x[1:4] = []

===========================================

列表方法

方法是一个与某些对象有紧密联系的函数,对象可能是列表,数字,也可能是字符串或者其他类型的对象,一般来说方法可以这样进行调用:

对象.方法(参数)

list函数

因为字符串不能像列表一样被改变,所以有时根据字符串创建列表会很有用。list函数就可以实现这个功能。

list('hello')
['h','e','l','l','o']
# --用分片赋值删除元素x = [1, 3, 3, 3, 2]x[1:4] = []print(x)# # count函数x = [[1, 2], 1, [1, 2]]print(x.count([1, 2]))print(x.count(1))# append 与 extenda = [1, 2]b = [4, 5]a.append(3)print(a)a.extend(b)print(a)

因为append和extend这两个函数没有返回值,所以不能print(a.append)这样会打印出一个None值

# insertx=[1,2,3,5]x.insert(3,"four")print(x)# pop 与 remove#pop返回被剔除的值,remove是一个没有返回值的原位置改变方法x = [1, 2, 5, 3, 4]print(x.pop(2))print(x.remove(3))  #打印一个none值print(x)

sort函数

x=[4,2,3,0]x.sort()print(x)
[0, 2, 3, 4]

如果我们想保留原列表,建立一个排序好的副本,像下面这样“但当然的操作是错误的,因为sort函数没有返回值”

y = x.sort()  #错错错

你可以这样

x = [4, 2, 3, 0]y = x[:]   #不要直接 y = x 这样的话就让x和y指向同一个地址y.sort()print(y)

或者使用sorted,这是一个返回排序完毕的列表的函数

y = sorted(x)

高级排序

python 3之后已经取消cmp了,但是加了一个functools.cmp_to_key函数去转换,https://docs.python.org/3/library/functools.html#functools.cmp_to_key

如果想降序排列的话可以

x.sort(reserve =True)

元组:不可变序列

元组和列表一样,是一种序列,唯一不同的是元组不能修改,创建元组的语法很简单,如果你使用逗号隔开一些值,那么你就创建了一个元组

创建一个只有一个元素的元组

x = (42,)

tuple函数

x = tuple([1,2,3])print(x)

将序列做为参数,并把他转换为元组,和list差不多。

只要不修改元组的值,操作都和列表基本一样