使用列表和切片

时间:2015-10-20 20:20:31

标签: python list function

这似乎是一件容易的事,老实说我不知道​​问题是什么。我有一个列表,如[0,1,2,3,4,5,6]等,我需要选择和索引,比方说3,输出应该像[4,5,6,3, 0,1,2],这是我的代码

def cut_list(listA, index):
    return listA[index+1:] + listA[index] + listA[0:index]

然而listA [index]函数运行不正常并给出错误,但是如果我取出其他部分而只做“return listA [index]”它会输出3

1 个答案:

答案 0 :(得分:3)

listA[index]是标量值,无法与列表连接。你正在做类似的事情:

>>> 3 + []
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'

列表只能与其他列表连接,因此解决方案是将listA[index]简单地更改为列表,并将其作为唯一元素。例如[listA[index]]

def cut_list(listA, index):
    return listA[index+1:] + [listA[index]] + listA[0:index]

为了使它适用于大多数序列类型,我们可以做一些聪明的切片:

def cut_list(listA, index):
    return listA[index+1:] + listA[index:index+1] + listA[0:index]

这是有效的,因为切片x[idx:idx+1] 应该返回与x相同类型的序列,该序列只包含来自idx'th的{​​{1}}元素

x