我正在尝试获取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])
似乎工作正常。有没有一种方法可以动态传递列表元素的范围以从列表中提取出来?
答案 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]
>>>
>>>