您当前的位置: 首页 >  Python

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python元组,列表,解构和循环

寒冰屋 发布时间:2020-07-21 20:54:57 ,浏览量:0

目录

介绍

列表

元组

负索引和切片

解构

循环

结论

  • 下载源1.3 KB
介绍

这是我们系列中的第二个模块,可帮助您了解Python及其在机器学习(ML)和人工智能(AI)中的使用。

既然您已经了解了Python的一些基本知识,这些知识已在第一个模块中进行了讨论,那么我们可以更深入地了解列表和元组数据结构,并了解如何使用它们。

列表

列表是项目的集合。列表是可变的:您可以更改其元素和大小。因此,它们类似于C#中的List,Java中的ArrayList和JavaScript中的数组。

您可以分配一个这样的列表,然后通过其从零开始的索引访问其元素:

foo = [1, 2, True, "mixing types is fine"]
print(foo[0]) # 1
foo[0] = 3
print(foo[0]) # 3

append方法在列表的末尾添加一个元素。insert方法将元素放置在您指定的索引处:

foo = [1, 2, 3]
foo.append(4)
print(foo) # [1, 2, 3, 4]
foo.insert(0, 0.5)
print(foo) # [0.5, 1, 2, 3, 4]

要删除索引中的元素,请使用del关键字:

del foo[2]
print(foo) # [0.5, 1, 3, 4]
元组

元组是项目集合的另一种类型。元组与列表类似,但是它们是不可变的。元组的分配如下:

foo = 1, 2, True, "you can mix types, like in lists"

您经常会看到元组的格式为(1, 2, "a"),并带有括号。元组值周围的括号用于帮助提高可读性,或者在上下文相关的情况下(如果需要)。例如,1, 2 + 3, 4表示的含义与(1, 2) + (3, 4)!不同。第一个表达式返回一个元组,(1, 5, 4)而第二个表达式返回(1, 2, 3, 4)。

从元组获取值的方式与从列表foo[index]获取值的方式相同,其中index表示元素的从零开始的索引。如果尝试更改以下元素之一,则可以看到元组是不可变的:

foo[0] = 3 # will raise a TypeError

这对于列表很有效,但对于元组则不行。

元组也没有添加、删除和其他一些方法。

您还可以从函数返回元组,这是一种常见的做法:

def your_function():
    return 1, 2

这将返回一个元组(1, 2)。

如果要只包含一个元素的元组,请在该元素后添加逗号:

foo = 1,
负索引和切片

Python的索引比我到目前为止展示的强大。它们提供了C#,Java等不存在的某些功能。一个示例是负索引,其中-1表示最后一个元素,-2表示倒数第二个元素,依此类推。

my_list = [1, 2, 3]
print(my_list[-1]) # 3

这适用于列表和元组。

另外,您可以通过指定切片的开始、结束或开始和结束元素的索引来获取列表或元组的切片。这将生成带有元素子集的新列表或元组。以下是一些示例来说明:

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

切片符号为[start:stop:step]。如果start保持为空,则默认为0。如果end保持空白,则表示列表的末尾。:step符号是可选的。因此::-1表示“从0到步骤-1,从列表的末尾开始”,并因此返回相反的列表。

切片永远不会提高IndexErrors。当超出范围时,它们只是返回一个空列表。

解构

假设您有一个具有已知数量的元素的元组(或列表),例如三个。并假设您宁愿有三个不同的变量,每个元组元素一个。

Python提供了一种称为解构(或解包)的功能,以单行将集合分解:

my_tuple = 1, 2, 3
a, b, c = my_tuple

现在a = 1,b = 2和c = 3。

这也适用于列表:

my_list = [1, 2, 3]
a, b, c = my_list

这在处理返回元组的函数时非常有用,Python生态系统中还有很多这样的函数,以及与AI相关的库进行处理时。

循环

您可能熟悉三种循环:for,foreach和while。Python仅提供while和foreach循环(它使用for关键字!)。不用担心。正如我们将在后面看到的,创建一个行为完全类似于for循环的循环非常容易。

这是一个遍历列表的Python循环:

fruits = ["Apple", "Banana", "Pear"]
for fruit in fruits:
    print(fruit)

您还可以遍历元组:

fruits = "Apple", "Banana", "Pear"
for fruit in fruits:
    print(fruit)

通常,您可以在每个迭代器上使用for循环。迭代器以及如何创建自己的迭代器,将在以后的文章中更深入地讨论。

如果要使用C样式的for循环而不是foreach循环,则可以循环range函数的结果,该结果将返回一个范围内的迭代器:

for i in range(10):
    print(i)

最后打印的数字为9。这等效于以下C代码片段:

for (int i = 0; i < 10; i++) {
    Console.WriteLine(i);
}

range函数提供的不仅仅是从零到给定数字的计数。您可以使用range(x, 10),其中x将第一个数组元素指定为其他起始编号。您可以使用第三个参数指定步长,例如range(0, 10, 2)。

创建从高到低的范围是这样的:range(10, 0, -1)。现在,第一个元素将为10,最后一个元素将为1。的确,range(0, 10)它不是range(10, 0, -1)的反向,因为第二个参数将不包含在范围内。

Python中的while循环看起来与您已经知道的非常相似:

while condition:
    # code

Python还提供了break和Continue语句,它们的工作方式与C#,Java,JavaScript和许多其他语言中的完全相同。

while True:
    if input() == "hello":
        break
结论

在本模块中,我们研究了Python中的列表和元组,并了解了索引、解构和循环的知识。在接下来的文章中,我们将谈论生成器和类。

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0480s