Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
Python列表截取与拼接
Python的列表截取与字符串操作类型,如下所示:
L=['Google', 'Runoob', 'Taobao']
嵌套列表
使用嵌套列表即在列表里创建其它列表,例如:
Python列表函数&方法
Python包含以下函数:
Python包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
操作列表
1.遍历整个列表
你经常需要遍历列表的所有元素,对每个元素执行相同的操作。例如,在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章列表中的每个标题。需要对列表中的每个元素都执行相同的操作时,可使用Python中的for 循环。
1.1 深入地研究循环
循环这种概念很重要,因为它是让计算机自动完成重复工作的常见方式之一。
编写for 循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。然而,选择描述单个列表元素的有意义的名称大有帮助。例如,对于小猫列表、小狗列表和一般性列表,像下面这样编写for 循环的第一行代码是不错的选择:
for cat in cats:
for dog in dogs:
for item in list_of_items:
这些命名约定有助于你明白for 循环中将对每个元素执行的操作。使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。
1.2 在for 循环中执行更多的操作
以下为if中常用的操作运算符:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较两个值是否相等 |
!= | 不等于 |
if 嵌套
在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结中。
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
实例
num=int(input("输入一个数字:"))
if num%2==0:
if num%3==0:
print ("你输入的数字可以整除 2 和 3")
else:
print ("你输入的数字可以整除 2,但不能整除 3")
else:
if num%3==0:
print ("你输入的数字可以整除 3,但不能整除 2")
else:
print ("你输入的数字不能整除 2 和 3")
执行后输出结果为:
输入一个数字:6
你输入的数字可以整除 2 和 3
1.3 在for 循环结束后执行一些操作
for 循环结束后需要提供总结性输出或接着执行程序必须完成的其他任务。
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("Thank you, everyone. That was a great magic show!")
开头两条print 语句针对列表中每位魔术师重复执行。然而,由于第三条print 语句没有缩进,因此只执行一次:
输出结果为:
Alice, that was a great trick!
I can't wait to see your next trick, Alice.
David, that was a great trick!
I can't wait to see your next trick, David.
Carolina, that was a great trick!
I can't wait to see your next trick, Carolina.
Thank you, everyone. That was a great magic show!
2.避免缩进错误
2.1 忘记缩进
对于位于for 语句后面且属于循环组成部分的代码行,一定要缩进。如
果你忘记缩进,Python会提醒你:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
print 语句应缩进却没有缩进。Python没有找到期望缩进的代码块时,会让你知道哪行代码有问题。
通常,将紧跟在for 语句后面的代码行缩进,可消除这种缩进错误。
2.2 忘记缩进额外的代码行
有时候,循环能够运行而不会报告错误,但结果可能会出乎意料。试图在循环中执行多项任务,却忘记缩进其中的一些代码行时,就会出现这种情况。
例如,如果忘记缩进循环中的第2行代码(它告诉每位魔术师,我们期
待他的下一次表演),就会出现这种情况:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
第二条print 语句原本需要缩进,但Python发现for 语句后面有一行代码是缩进的,因此它没有报告错误。最终的结果是,对于列表中的每位魔术师,都执行了第一条print 语句,因为它缩进了;而第二条print 语句没有缩进,因此它只在循环结束后执行一次。由于变量magician 的终值为’carolina’ ,因此只有她收到了消息
“looking forward to the next trick”:
Alice, that was a great trick!
David, that was a great trick!
Carolina, that was a great trick!
I can’t wait to see your next trick, Carolina.
这是一个逻辑错误 。从语法上看,这些Python代码是合法的,但由于存
在逻辑错误,结果并不符合预期。如果你预期某项操作将针对每个列表
元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行
代码缩进。
2.3 不必要的缩进
如果你不小心缩进了无需缩进的代码行,Python将指出这一点:
message = "Hello Python world!"
print(message)
print 语句无需缩进,因为它并不属于前一行代码,因此Python将指出这种错误:
为避免意外缩进错误,请只缩进需要缩进的代码。在前面编写的程序
中,只有要在for 循环中对每个元素执行的代码需要缩进。
2.4 循环后不必要的缩进
如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个
列表元素重复执行。在有些情况下,这可能导致Python报告语法错误,
但在大多数情况下,这只会导致逻辑错误。
例如,如果不小心缩进了感谢全体魔术师精彩表演的代码行,结果将如
何呢?
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("Thank you everyone, that was a great magic show!")
由于代码行被缩进,它将针对列表中的每位魔术师执行一次,如下所示:
这也是一个逻辑错误,与2.2节的错误类似。Python不知道你的本意,只要代码符合语法,它就会运行。如果原本只应执行一次的操作执行了多次,确定你是否不应该缩进执行该操作的代码。
2.5 遗漏了冒号
for 语句末尾的冒号告诉Python,下一行是循环的第一行。
magicians = ['alice', 'david', 'carolina']
for magician in magicians
print(magician)
如果你不小心遗漏了冒号,将导致语法错误,这种错误虽然易于消除,但并不那么容易发现。程序员为找出这样的字符错误,花费的时间多得令人惊讶。这样的错误之所以难以发现,是因为通常在我们的意料之外。
3.创建数值列表
列表非常适合用于存储数字集合,Python提供了很多工具,可帮助你高效地处理数字列表。明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写的代码也能运行得很好。
3.1 函数range()
函数range() 让你能够轻松地生成一系列的数字。
range() 只是打印数字1~4,这是你在编程语言中经常看到的差一行为的结果。函数range() 让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。
使用range() 时,如果输出不符合预期,请尝试将指定的值加1或减1。
3.2 使用range() 创建数字列表
要创建数字列表,可使用函数list() 将range() 的结果直接转换为列
表。如果将range() 作为list() 的参数,输出将为一个数字列表。
使用函数range() 时,还可指定步长。例如,下面的代码打印1~10内的
奇数:
函数range() 从1开始数,然后不断地加2,直到达到或
超过终值(11)
例子:前10个整数(即1~10)的平方
缩进与不缩进的区别
3.3 对数字列表执行简单的统计计算
几个专门用于处理数字列表的Python函数。
min()最小值
max()最大值
sum()总和
3.4 列表解析
列表解析 将for 循环和创建新元素的代码合并成一行,并自动附加新元素。
指定一个描述性的列表名,如squares ;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2 ,它计算平方值。接下来,编写一个for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为for value in range(1,11) ,它将值1~10提供给表达式value ** 2 。
4.使用列表
4.1 切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1 和2 的元素。
例子:
4.2 遍历切片
如果要遍历列表的部分元素,可在for 循环中使用切片。
在很多情况下,切片都很有用。例如,编写游戏时,你可以在玩家退出游戏时将其最终得分加入到一个列表中。然后,为获取该玩家的三个最高得分,你可以将该列表按降序排列,再创建一个只包含前三个得分的切片。理数据时,可使用切片来进行批量处理;编写Web应用程序时,可使用切来分页显示信息,并在每页显示数量合适的信息。
4.3 复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。
让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
5 元组
列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修的,不能修改的值称为不可变的 ,而不可变的列表被称为元组。
5.1 定义元组
元组使用圆括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。例如,如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它们是不能修改的:
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
修改元组dimensions 中的一个元素,看看结果如何:
dimensions = (200, 50)
dimensions[0] = 250
修改第一个元素的值,导致Python返回类型错误消息。由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值:
5.2 遍历元组中的所有值
使用for 循环来遍历元组中的所有值:
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
就像遍历列表时一样,Python返回元组中所有的元素,:
200
50
5.3 修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
Original dimensions:
200
50
Modified dimensions:
400
100
相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。