朋友们好啊,最近去核桃编程看了看,发现报名python编程的小朋友还真不少呢!也许是培训机构宣传的好,也许是老师讲得好,续报率刚刚的;但是有个问题啊家人们:小孩儿都开始学python了,你会了吗?
下面就让我们复习一下之前讲过的python基础:列表。
列表的增删改切
空列表的初始化
列表名 = []
列表名 = list()
负数索引
Python还为从后往前访问元素提供了一种特殊语法,即使用负数索引来访问元素。索引-1表示倒数第一个元素的位置,索引-2表示倒数第二个元素的位置,以此类推。
添加列表元素
将元素附加到列表末尾。这个功能需要使用列表的append()方法来实现,必须指定插入的新的元素的值是什么。
列表名.append(新的元素)
在列表中的任意一个位置添加新元素,可以使用方法insert()进行,必须指定新元素的索引和值。
列表名.insert(新的元素的索引, 新的元素)
想将一个列表扩展到另一个列表后面,可以使用列表的extend()方法。
被扩展的列表名.extend(列表名)
ps:如果列表和列表用append,则是表中表。
删除列表元素
删除末尾元素:
列表名.pop()
指定:
列表名.pop(索引)
直接根据具体的值来进行删除,可以使用方法remove()进行,必须指定删除元素的值:
列表名.remove(待删除的元素)
修改列表元素
修改列表在该索引处的元素:
列表名[索引] = 修改值
列表的切片
可以非常灵活地获取列表中的子集,得到一个新的列表:
列表切片 = 列表名[起始索引:终止索引:步长]
- 步长:表示间隔的大小,默认为1。
- 要注意,即使是使用了切片负索引,所得到的切片区间[起始索引, 终止索引)仍然是一个左闭右开区间。
- 相比起直接使用索引取列表中的值时,索引需要严格落在列表长度范围内,切片操作中对于起始索引和终止索引范围的选择则非常宽容。即使所选取的起始索引和终止索引在原数组中取不到,也不会发生报错。
列表的特点
可变(mutable)数据类型
列表内层元素的类型是可以不一致的。
所谓原地修改,指的是对原对象自身进行的修改,并没有额外创建新的对象。比如append()、extend()、pop()等方法,包括在文档Python常用内置函数、方法、技巧汇总 中提到的sort()、reverse()等方法。+=,*=等运算符,有时候也被称为原地修改运算符。
而与之对应的非原地修改,指的将修改结果储存在一个新的对象中,而原对象不发生改变的一种修改。比如在文档Python常用内置函数、方法、技巧汇总 中提到的sorted()、reversed()等内置函数。
列表常用方法与内置函数
排序
列表的方法sort()或者内置函数sorted()可以完成排序操作。
方法sort()或者内置函数sorted()都有两个形参,reverse和key,前者表示是否倒序排列,后者表示排序的依据,通常会涉及到lambda匿名函数的使用
翻转
列表的方法reverse()或者内置函数reversed()可以完成翻转操作。
也可以使用列表的切片操作来完成翻转,设置步长为-1即可。
映射
如果想把一个列表里的所有元素批量地调用某一个函数,并映射得到一个新的列表(原列表中元素相对位置不变),可以使用内置函数map(func, iter)。
map(func, iter)的含义是,对可迭代对象iter(通常是一个列表)里的所有元素都调用函数func,并得到一个新的map对象。如果我们对map对象的外部再调用list(),则可以得到一个新的列表。
字符串与列表的相互转换
字符串分割为列表
字符串中的split(x)方法以字符串x为分割符,将原字符串分割为一个新的列表并返回,原字符串不发生改变。如果不传入参数x,则默认为按照空格" “进行分割。最常用的分隔符为空格” “或者逗号”,"。
s = "1 2 3 4 5"
lst = s.split() # 等价于lst = s.split(" ")
s = "1,2,3,4,5"
lst = s.split(",") # 两种分割均会得到lst = ["1", "2", "3", "4", "5"]
列表合并为字符串
字符串中的join(lst)方法以原字符串为合并符,将列表lst合并为一个新的字符串并返回。
注意lst中的元素必须是字符串。最常用的合并符为空字符串"“、空格字符串” “、逗号”,"。
字符串的分割与合并是一对相互对应的操作,常用于列表与字符串之间的相互转换。
注意:
- 字符串属于一种不可变数据类型,并不能直接进行修改操作。当题目要求对一个字符串进行修改时,通常会先将原字符串使用split()方法或list()转化成列表,对列表修改后再使用join()方法得到新字符串的方式来实现。
- 列表lst必须是一个字符串类型列表,即lst: List[str]。如果lst是一个整数类型列表,直接使用语句"".join(lst)会出现类型错误TypeError。如需进行合并操作,必须使用map()内置函数对lst中的元素进行类型转换,将lst中的所有int类型元素转换成str类型。即
lst = [0, 4, 2]
s = "".join(list(map(str, lst))) # 得到s = "042"
列表的输入与输出
我们可以使用字符串的split()方法结合map()函数来实现输入。
# 输入形如"a b c"的字符串列表,用空格隔开
# 得到形如lst = ["a", "b", "c"]
lst = input().split()
# 输入形如"1 2 3"的数字列表,用空格隔开
# input().split()会得到形如["1", "2", "3"]
# 得到形如lst = [1, 2, 3]
lst = list(map(int, input().split()))
在ACM模式中,列表的输出通常要求以字符串的形式输出,且用空格或逗号分隔开各个元素。
我们可以使用字符串的join()方法结合map()函数来实现输出。
输出字符串列表,可以这样写
输出形如"a b c"的字符串列表,用空格隔开
lst = ["a", "b", "c"]
ans = " ".join(lst)
print(ans)
# 输出形如"1 2 3"的数字列表,用空格隔开
nums = [1, 2, 3]
ans = " ".join(list(map(str, nums)))
print(ans)
1万+



被折叠的 条评论
为什么被折叠?



