专门切片

时间:2016-03-16 12:46:14

标签: list python-3.x slice

如何获取列表的最后三个元素,不包括第一个元素?

例如,使用这两个列表

a = ['Matt', '1', '2']b = ['Luke', '1', '2', '3']

我希望返回的列表为:['1', '2']['1', '2', '3']。有一个简单的方法吗?

5 个答案:

答案 0 :(得分:1)

您只需使用slicing

>>> b[-3:]
['1', '2', '3']

如果您的列表中得分少于3,那么您可以:

>>> b = ['Luke', '1', '2']
>>> b[1:]
['1', '2']

因此,要将它们组合起来,您可以使用:

if len(b) > 3:
    b[-3:]
else:
    b[1:]

答案 1 :(得分:1)

为了从列表中获取 last n元素,您可以:

a[-n:]

这是一个简单的例子:

>>> a = [1, 2, 3, 4]
>>> a[-3:]
[2, 3, 4]

如果您的列表包含< n个元素,你可以将第一个元素切片。

答案 2 :(得分:1)

在您的情况下,名称始终是列表中的第一个参数,因此只需应用其中一个参数:

 a = a[1:]
 b = b[1:]

获取最后三个参数不会在a上工作,因为它包含3个参数。它会在一些条件陈述之后起作用。

如果你确定你想要最后3个参数,请使用:

a = a[-3:]
b = b[-3:]

完整代码段:

def get_list(my_list):
    if len(my_list) > 3:
        return my_list[-3:]
    else:
        return my_list[1:]

答案 3 :(得分:1)

除了其他好的答案之外,您可能还需要考虑使用dictionaries而不是列表。你可以这样做:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://someServer:6405/biprws/logon/long");
request.Accept = "application/json";

输出:

a = ['Matt', '1', '2']
b = ['Luke', '1', '2', '3']
scoresDict = {}

scoresDict[a[0]] = a[1:]
scoresDict[b[0]] = b[1:]

print(scoresDict)
print(scoresDict['Matt'])
print(scoresDict['Luke'])

答案 4 :(得分:0)

对于list中的不同元素,请将所有元素放在列表中,并将map放入lambda函数。

In [1]: a = [1,2,3,4]
In [2]: b = ['a', 'b', 'c', 'd', 'e']
In [3]: lis = [a, b]

In [4]: list(map(lambda x: x[-(len(x)-1):], lis))
Out[4]: [[2, 3, 4], ['b', 'c', 'd', 'e']]