Python入门之基础知识(三、操作列表)

本文介绍了Python中操作列表的基础知识,包括使用for循环遍历列表、避免缩进错误、创建和统计数字列表,以及元组的定义和遍历。文章强调了缩进在Python语法中的重要性,并提供了实例展示如何处理列表切片、复制和错误的列表复制方法。此外,还简述了元组作为不可变序列的应用。
摘要由CSDN通过智能技术生成

系列文章目录

第一部分 Python入门之基础知识
第二部分 Python入门之实践项目



三、操作列表

1.遍历整个列表

在Python中,我们可以使用for循环遍历整个列表。for循环语法如下:

for 变量名 in 列表名:
    # 执行的代码块

其中,变量名是用来存储列表元素值的变量名,而列表名则是需要遍历的列表名。在for循环内部执行的代码块就是对每个元素操作的代码。

以下是一个简单的示例,演示如何使用for循环遍历一个列表并输出其中的元素:

# 定义一个列表
my_list = ["apple", "banana", "cherry"]

# 使用for循环遍历列表
for item in my_list:
    print(item)

输出结果为:

apple
banana
cherry

在这个示例中,我们首先定义了一个包含3个字符串元素的列表 my_list。然后,我们使用for循环遍历整个列表,并将每个元素存储到变量 item 中。在循环体内部,我们使用 print() 函数输出每个元素的值。

1.1深入地研究循环

循环这种概念很重要,因为它是让计算机自动完成重复工作的常见方式之一。

我们还是用这个例子:

for item in my_list:
    print(item)

在执行 for 循环时,Python会自动遍历整个列表,并将列表中的每个元素依次赋值给变量 item。在代码块中,你可以使用变量 item 对当前正在处理的元素进行操作,例如,可以将其打印到控制台上、添加到另一个列表中等等。每次循环迭代完成后,Python都会自动继续执行下一次迭代,直到整个列表中的所有元素都被处理完毕为止。

需要注意的是,for循环在执行时将对序列中的每个元素执行指定的操作,而不管序列包含多少个元素。如果序列包含一百万个元素,Python就重复执行指定的操作一百万次,且通常速度非常快。另外,在编写for循环时,你可以选择任何有意义的变量名称来存储序列中的每个元素,但应尽可能选择描述单个元素的有意义的变量名,以便更好地理解代码的目的和功能。

1.2在for循环中执行更多的操作

在for循环中,可对每个元素执行任何操作,即可以在每个迭代过程中执行多个操作。下面是一个简单的示例:

numbers = [1, 2, 3, 4, 5]

for number in numbers:
    # 计算平方
    square = number ** 2 
    # 输出结果
    print(number, "的平方是:", square)

在上面的示例中,我们首先定义了一个包含数字的列表。然后,在for循环中,我们对每个数字进行迭代,并计算它的平方。我们还输出了数字和其平方的结果。

1 的平方是: 1
2 的平方是: 4
3 的平方是: 9
4 的平方是: 16
5 的平方是: 25

在for循环中,想包含多少行代码都可以。在代码行for number in numbers:后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,可对列表中的每个值执行任意次数的操作。

1.3在for循环结束后执行一些操作

在for循环后面,没有缩进的代码都只执行一次,而不会重复执行。

# 定义一个列表
numbers = [1, 2, 3, 4, 5]

# 使用for循环遍历列表中的每个数字
for number in numbers:
    # 输出当前数字
    print("Current number is:", number)

# 循环结束后输出消息
print("All numbers have been processed.")

当循环完成时,程序将会继续执行循环后面的代码块,输出"All numbers have been processed."的消息。这个代码块需要和for循环保持相同的缩进,以表明它是在循环结束后执行的。

以下是代码的输出结果:

Current number is: 1
Current number is: 2
Current number is: 3
Current number is: 4
Current number is: 5
All numbers have been processed.

程序使用for循环遍历列表numbers中的每个数字,在每次迭代时打印出当前数字。然后在循环结束后,输出"All numbers have been processed."的消息。

2.避免缩进错误

Python根据缩进来判断代码行与前一个代码行的关系,即缩进决定了代码块的范围。在循环、条件语句、函数定义等地方,都需要使用缩进来标识代码块。简单地说,它要求你使用缩进让代码整洁而结构清晰。

下面来看一些较为常见的缩进错误。

2.1忘记缩进

当你在一个需要缩进的代码块中忘记了对代码进行缩进时,Python解释器将无法正确识别代码块。下面是一个示例:

my_list = ["apple", "banana", "cherry"]
for item in my_list:
print(item)

这段代码会报错,因为print语句没有被正确地缩进。

2.2忘记缩进额外的代码行

有时候,在一个代码块内部,我们会使用多行代码来完成某一项任务。如果忘记为这些额外的代码行添加缩进,则会出现逻辑错误,导致结果出乎意料,但从语法上看,这样的Python代码是合法的。

2.3不必要的缩进

如果你不小心缩进了无需缩进的代码行,例如:

message='Hello, World!'
    print(message)

这里的print语句无需缩进,因为它并不属于前一行代码,因此Python将会报错。

2.4循环后不必要的缩进

有些情况下,我们在循环结束后会添加一些代码。如果这部分代码进行了额外的缩进,那么它们就会被错误地视为循环的一部分。下面是一个示例:

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    print(number)
    print('This is not part of the loop!')

第四行的代码也进行了缩进,这是一个逻辑错误。而Python不知道你的本意,只要代码符合语法,它就会运行。

2.5遗漏了冒号

for语句末尾的冒号告诉Python,下一行是循环的第一行。

for number in numbers ❶
    print(number)

如果你不小心遗漏了冒号,如❶所示,将导致语法错误,因为Python不知道你意欲何为。

3.创建数值列表

列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理数字列表。明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写的代码也能运行得很好。

3.1使用range()创建数字列表

在Python中,range()函数可以用来创建一个数字序列。它有三种形式:

range(stop)
range(start, stop)
range(start, stop, step)

其中,start表示序列的起始值(默认为0),stop表示序列的结束值(不包含),step表示序列的步长(默认为1)。

使用range()函数创建数字列表的方法很简单,只需将其传递给list()函数即可。例如,要创建一个从0到9的数字列表,可以使用以下代码:

numbers = list(range(10))
print(numbers)

这将输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

如果需要指定起始值和步长,可以像下面这样使用range()函数:

numbers = list(range(1, 11, 2))
print(numbers)

这将输出:[1, 3, 5, 7, 9]

3.2对数字列表执行简单的统计计算

当你有一个数字列表时,可以使用内置的min()、max()和sum()函数来执行简单的统计计算。以下是一个示例:

numbers = [23, 45, 67, 12, 89, 34, 56, 78]
print("Minimum number: ", min(numbers))   # 输出最小值
print("Maximum number: ", max(numbers))   # 输出最大值
print("Sum of numbers: ", sum(numbers))   # 输出总和

输出结果为:

Minimum number:  12
Maximum number:  89
Sum of numbers:  404

3.3 列表解析

列表解析是一种简洁而强大的Python编程技巧,它允许你使用一行代码来创建一个新的列表。这个新列表可以通过对现有列表中的每个元素执行某些操作来实现。

一个基本的列表解析包括两个部分:一个用于遍历原始列表的for循环,以及一个用于指定要在新列表中创建的元素的表达式。

下面是一个具体示例,演示如何使用range()和列表解析来创建一个包含前20个正偶数的列表:

even_numbers = [i * 2 for i in range(1, 11)]
print(even_numbers)

要使用这种语法,首先指定一个描述性的列表名,如even_numbers;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为 i * 2,它表示偶数。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为for i in range(1, 11),它将值1~10提供给表达式。请注意,这里的for语句末尾没有冒号。

输出结果为:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

在上面的示例中,range(1,11)产生了从1到10的整数序列。这个序列被传递给列表解析,然后每个元素i都乘以2并添加到新列表中。

需要注意的是,range()函数产生的整数序列不包括第二个参数(也就是11)。因此,在上面的示例中,实际上只有10个整数被遍历,即1到10。

4.使用列表的一部分

在上一章中,你学习了如何访问单个列表元素。在本章中,你一直在学习如何处理列表的所有元素。你还可以处理列表的部分元素——Python称之为切片。

4.1切片

在Python中,可以使用列表切片来获取列表的子集。例如,如果我们有一个名为my_list的列表,并且希望获取其中前三个元素,我们可以使用以下代码:

my_list = [1, 2, 3, 4, 5]
subset = my_list[:3]
print(subset) # 输出[1, 2, 3]

这里的[:3]表示从列表开头开始,一直取到第三个元素(但不包括第三个元素),相当于[0:3]。

取出列表的最后三个元素:

my_list = [1, 2, 3, 4, 5]
last_three_elements = my_list[-3:]
print(last_three_elements) # 输出[3, 4, 5]

这里的[-3:]表示从列表末尾开始,一直取到列表的第一个元素(但不包括第一个元素),相当于[len(my_list)-3:len(my_list)]。

取出偶数索引位置的元素:

my_list = [1, 2, 3, 4, 5]
even_index_elements = my_list[::2]
print(even_index_elements) # 输出[1, 3, 5]

这里的[::2]表示从列表开头开始每隔一个元素取出一个元素,相当于[0:len(my_list):2]。

反转列表:

my_list = [1, 2, 3, 4, 5]
reversed_list = my_list[::-1]
print(reversed_list) # 输出[5, 4, 3, 2, 1]

这里的[::-1]表示从列表末尾开始取元素,每次取一个,直到列表开头。这就相当于将整个列表反转。

4.2遍历切片

如果要遍历列表的部分元素,可在for循环中使用切片,像遍历常规列表一样遍历一个列表切片。例如,如果我们想要遍历my_list中的前三个元素,我们可以使用以下代码:

my_list = [1, 2, 3, 4, 5]
for element in my_list[:3]:
    print(element)

这段代码将遍历my_list中的前三个元素并输出它们。

4.3复制列表

你经常需要根据既有列表创建全新的列表。要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

例如,如果我们有一个名为my_list的列表,并希望创建一个与其完全相同的新列表,我们可以使用以下代码:

original_list = [1, 2, 3, 4, 5]
copied_list = original_list[:]
print(copied_list) # 输出[1, 2, 3, 4, 5]

这里的[:]表示从列表开头开始,一直取到列表末尾,相当于复制了整个列表。

4.4错误的复制方法

有时候,人们会尝试使用以下代码来复制一个列表:

original_list = [1, 2, 3, 4, 5]
copied_list = original_list

然而,这种方式并不是真正地复制了original_list。相反,它只是创建了一个指向同一内存地址的新变量copied_list,因此对其中一个变量所做的更改会影响另一个变量。例如:

original_list = [1, 2, 3, 4, 5]
copied_list = original_list
original_list.append(6)
print(copied_list) # 输出[1, 2, 3, 4, 5, 6]

这里,我们向original_list添加了一个新元素6,但是由于copied_list只是original_list的引用,因此输出保持一致。

5.元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,然而有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

5.1定义元组

元组(tuple)是Python中的一种序列数据类型,类似于列表,但不能修改。元组中的元素可以是不同类型的数据,也可以重复出现。元组使用小括号 () 包裹元素,各元素之间用逗号隔开。

以下是一些定义元组的示例:

# 定义一个空元组
empty_tuple = ()

# 定义一个包含整数和字符串的元组
my_tuple = (1, 2, "hello", "world")

# 定义只有一个元素的元组,需要在元素后面加上逗号
single_element_tuple = (3,)

# 将列表转换为元组
my_list = [4, 5, 6]
my_tuple_2 = tuple(my_list)

5.2遍历元组中的所有值

像列表一样,也可以使用for循环来遍历元组中的所有值:

my_tuple = ("apple", "banana", "cherry")
for x in my_tuple:
    print(x)

输出结果为:

apple
banana
cherry

相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。


小结

在本章中,你学习了:如何高效地处理列表中的元素;如何使用for循环遍历列表,Python如何根据缩进来确定程序的结构以及如何避免一些常见的缩进错误;如何创建简单的数字列表,以及可对数字列表执行的一些操作;如何通过切片来使用列表的一部分和复制列表。你还学习了元组(它对不应变化的值提供了一定程度的保护)。

在下一章中,你将学习如何使用if语句在不同的条件下采取不同的措施;学习如何将一组较复杂的条件测试组合起来,并在满足特定条件时采取相应的措施。你还将学习如何在遍历列表时,通过使用if语句对特定元素采取特定的措施。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值