从列表的最后一个元素提取到某个字符串

时间:2014-02-27 16:31:52

标签: python list-comprehension

我需要帮助才能实现这一目标:

list_char = ['a','b','c','s','a','d','g','b','e']

我需要这个输出:

['s','a','d','g','b','e']

所以从最后一个元素开始直到找到第一个元素(我之前可以有更多's',所以我必须从最后一个元素开始)

有可能吗?

谢谢

4 个答案:

答案 0 :(得分:4)

>>> list_char = ['a','b','c','s','a','d','g','b','e']
>>> list_char[-list_char[::-1].index('s')-1:]
['s', 'a', 'd', 'g', 'b', 'e']

答案 1 :(得分:1)

将列表转换为字符串,然后转换回来:

In [83]: l = ['a','b','c','s','a','d','g','b','e']

In [85]: s=''.join(l)

In [87]: list(s[s.rfind('s'):])
Out[87]: ['s', 'a', 'd', 'g', 'b', 'e']

答案 2 :(得分:0)

我会用numpy来做这件事,因为它允许轻松操作。

list_char = ['a','b','c','s','a','d','g','b','e']
test = np.array(list_char)

这给了我们一个字符串数组,现在我们需要找到数组中的最后一个,

ind = np.where(test=='s')[-1]
#returns 3 in this cause, but would return the last index of s

然后切片

test[ind:]
#prints array(['s', 'a', 'd', 'g', 'b', 'e'], dtype='|S1')

答案 3 :(得分:-1)

list_char = ['a','b','c','s','a','d','g','b','e']
index = "".join(list_char).rindex('s')
print list_char[index:]