Python元组,列表,解构和循环
⽬录
介绍
这是我们系列中的第⼆个模块,可帮助您了解Python及其在机器学习(ML)和⼈⼯智能(AI)中的使⽤。
既然您已经了解了Python的⼀些基本知识,这些知识已在第进⾏了讨论,那么我们可以更深⼊地了解列表和元组数据结构,并了解如何使⽤它们。
列表
列表是项⽬的集合。列表是可变的:您可以更改其元素和⼤⼩。因此,它们类似于C#中的List<T>,Java中
的ArrayList<T>和JavaScript中的数组。
writeline使用方法python您可以分配⼀个这样的列表,然后通过其从零开始的索引访问其元素:
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中的列表和元组,并了解了索引、解构和循环的知识。在中,我们将谈论⽣成器和类。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论