在Python中获取具有列表动态范围的元素

时间:2019-08-01 07:18:47

标签: python list

我正在尝试获取python列表中的元素,但具有动态范围,即如果我现在拥有two lists ['9','e','s','t','1','2','3'] and ['9','e','1','2','3','s','t'],则需要访问三个数字,包括1,因此我做了1传递索引值1并提取所需的值,即

s_point = valueList.index('1')
print (valueList[s_point::3]

,但是对于

这样的const值,它似乎不起作用
print (valueList[1::3]) 

似乎工作正常。有没有一种方法可以动态传递列表元素的范围以从列表中提取出来?

3 个答案:

答案 0 :(得分:0)

看起来像您需要的

lst = ['9', 'e', '1', '2', '3', 's', 't']
print(lst[lst.index('1'):lst.index('1') + 3])

lst1 = ['9', 'e', 's', 't', '1', '2', '3']
print(lst1[lst1.index('1'):lst1.index('1') +3])

输出:

['1', '2', '3']
['1', '2', '3']

答案 1 :(得分:0)

如果您希望在s_point索引之后的三项,则不必使用step的{​​{1}},因为用法不同。只需将您的行更改为此:

::step

输出:

valueList[s_point:s_point+3]

这样,它将从>>> [1,2,3] 的索引到其前面的三个索引中获取valueList的子列表。

要了解s_point在其他网站中的用法,请参见:

  

步骤是结果中每个数字之间的差。的   如果未指定,则该步骤的默认值为1

例如:

step

结果:

valueList[::2]

如您所见,奇数项目不在列表中。

答案 2 :(得分:0)

有三个问题

1)s_point = valueList.index('1') print (valueList[s_point::3]

但它似乎不起作用,

这仅仅是因为您错过了print语句的结尾括号。

2)但是,在此示例中,像1这样的const值

print(valueList [1 :: 3])有效

,但不会提供所需的输出,而是打印前三个数字。

3)假设定义了列表值列表时,使用的字母用单引号引起来。

现在是实际解决方案的部分。

如果正在寻找需要1或任何动态值的情况,请从列表中说出x以及其后的后三个值。您可以使用一个名为lambda的函数或匿名函数,该函数或函数应接受一个动态参数,并应返回随后的3个或动态值。如下图所示。

>>>
>>> valuelist = [9, 'e', 's', 't', 1, 2, 3]
>>>
>>> result = lambda x,y: valuelist[valuelist.index(x):valuelist.index(x)+y]
>>> result(1,3)
[1, 2, 3]
>>>
>>>