【发布时间】:2021-04-14 21:25:02
【问题描述】:
我有列表 l = [1,3,4,5,7,6,4,5,10,1],我想获取位置 4、8 的元素。我正在使用命令 l[4, 8] 来获取这两个元素,但它不起作用。方法不对吗?
【问题讨论】:
标签: python
我有列表 l = [1,3,4,5,7,6,4,5,10,1],我想获取位置 4、8 的元素。我正在使用命令 l[4, 8] 来获取这两个元素,但它不起作用。方法不对吗?
【问题讨论】:
标签: python
>>> l = [1,3,4,5,7,6,4,5,10,1]
>>> a,b = l[4], l[8]
>>> a,b
(7, 10)
>>> a
7
>>> b
10
>>>
【讨论】:
你可以这样做:
l = [1,3,4,5,7,6,4,5,10,1]
out = list((l[2], l[4], l[8]))
print(out)
输出:
[4, 7, 10]
【讨论】:
当访问一个列表时,你给它一个索引 i,它会返回第 i 个元素:
>>> x = [0,1,2,3,4,5,6,7]
>>> print(x[3])
3
请注意,当访问元素“3”时,它实际上会给出列表的第四个元素。这是因为在几乎每种编程语言中,计算数组位置(python 中的列表)都是从零开始的。 (f*** Lua)
Python 有两个额外的功能,其中包含在其他语言中通常没有的列表。
第一个是负覆盖,当你给列表一个负索引时,它将从列表的后面开始计数:
>>> print(x[-1])
7
第二种是原生列表切片,你可以给列表两个数字,它会返回这两个索引之间的元素子集:
>>> print(x[1:3])
[1, 2]
>>> print(x[3:-2])
[3, 4, 5]
正如其他用户所提到的,您可以通过用逗号分隔这两个元素来分别访问它们:
>>> L = [1,3,4,5,7,6,4,5,10,1]
>>> out = L[4], L[8]
>>> print(out)
(7, 10)
Out 是一个元组,基本上是一个你不能写入的列表。您可以通过在定义左侧用逗号分隔变量来将元组(或列表)中的变量分隔为单独的变量:
>>> a, b = out
>>> print(a)
7
>>> print(b)
10
如果您需要经常这样做,这里有一个函数,它接收一个值列表和一个索引列表,创建一个新列表并将所有给定值复制到新列表中:
def get_from_list(values: list, indices: list):
out = list()
for i in indices:
out.append(values[i])
return out
a, b = get_from_list(L, [4, 8])
我很确定这是一个糟糕的解决方案性能明智,但代码可读性很强,我认为这对于学习者上下文来说已经足够了。
【讨论】: