有些人似乎回答错了问题。你说你想要做的是:
>>> first_item, last_item = some_list[0,-1]
>>> print first_item
'1'
>>> print last_item
'F'
例如,您想将第一个和最后一个元素分别提取到单独的变量中。
在这种情况下,Matthew Adams、pemistahl和katrielalex的答案都是有效的。这只是一个复合赋值:
first_item, last_item = some_list[0], some_list[-1]
但是后来你提到了一个问题:“我要在同一行中分割它,这将需要花费两次分割的时间:”
x, y = a.split("-")[0], a.split("-")[-1]
因此,为了避免两个split()调用,您必须仅对从一次拆分中得到的列表进行操作。
在这种情况下,试图在一行中完成太多操作会影响清晰度和简洁性。使用变量来保存拆分结果:
lst = a.split("-")
first_item, last_item = lst[0], lst[-1]
其他回答已经回答了“如何获得一个由列表的第一个和最后一个元素组成的新列表”的问题?他们可能受到您的标题的启发,该标题提到了切片,但根据仔细阅读您的问题,您实际上并不需要切片。
据我所知,有三种方法可以获得一个由列表的第0个和最后一个元素组成的新列表:
>>> s = 'Python ver. 3.4'
>>> a = s.split()
>>> a
['Python', 'ver.', '3.4']
>>> [ a[0], a[-1] ] # mentioned above
['Python', '3.4']
>>> a[::len(a)-1] # also mentioned above
['Python', '3.4']
>>> [ a[e] for e in (0,-1) ] # list comprehension, nobody mentioned?
['Python', '3.4']
# Or, if you insist on doing it in one line:
>>> [ s.split()[e] for e in (0,-1) ]
['Python', '3.4']
列表推导式的优点是,元组中的索引集可以是任意的,并且可以通过编程方式生成。
first, last = some_list[0], some_list[-1]
有什么不好的地方? - Matthew Adamsx, y = a.split("-")[0], a.split("-")[-1]
。 - chownsome_list[0::len(some_list)-1]
,认为这样太聪明反而不好。 - DSM