2013-11-05 57 views
-2

我知道这个问题已被问了很多次。当我搜索时,我通常会获得有关交换列表中元素的答案。如何移动元素

我不想交换列表中的元素,而是将元素从一个位置移动到另一个位置。

例子(移动元件0:

[1,2,3,4,5] 

输出:

[2,3,1,4,5] 

例子(移动元件2):

[1,2,3,4,5] 

输出:

[1,2,4,5,3] 

是否有一个内置的python函数可以让我做到这一点?

P.S我不是要求你们向我展示如何做到这一点......我问是否有Python中的inbult函数!!!!!!!

+1

http://mattgemmell.com/2008/12/08/what-have-you-tried/ – samrap

+0

我能想到的唯一的事情就是交换元素......你看我在编程方面相当新颖......如果我第一次不了解它,我该如何尝试任何东西? – user2954367

+0

因为一个简单的谷歌搜索会给你这样的问题无尽的结果。尝试研究和尝试自己。在SO上提出问题应该永远是最后的手段:) – samrap

回答

0

从你的问题,它不完全清楚你正在寻找什么精确的功能,所以这里有一些功能,应该实现你想要的任何转换。

这是一个函数,它可以将列表中位置x处的值替换为位置y处的值,反之亦然。

def swap(mylist, x, y): 
    """Swaps position x for position y in a list""" 
    swap1 = mylist[x] 
    swap2 = mylist[y] 
    mylist[y] = swap1 
    mylist[x] = swap2 
    return mylist 

这是一个将位置x,y位置的值向前移动的函数。

def moveforward(mylist, x, y): 
    """"Function moves the value at position x, y positions forward, keeping x in its  original position""" 
    move1 = mylist[x] 
    mylist[x + y] = move1 
    return mylist 

这里是一个函数,用于将x中的每个值向前旋转一个值,将列表末尾的值移动到x。

def rotate(mylist, x): 
    """Rotates all values from x onwards one value forward, moving the end of the list to x.""" 

    replace = x + 1 
    while replace < len(mylist): 
     mylist[replace] = mylist[replace - 1] 
     replace += 1 

    mylist[x] = mylist[replace - 1] 

    return mylist 

最后:

def rotateback(mylist, x, y): 
    """Rotates every value beyond x one back and places value mylist[x] at position mylist[y]""". 

    xx = mylist[x] 

    while x < y: 
     mylist[x] = mylist[x + 1] 
     x += 1 

    mylist[y] = xx 


    return mylist 
+0

迈克尔,感谢您的及时答复! ..但这就是我不希望交换列表中的整数的问题,而是将它们移动... – user2954367

+0

这实际上取决于您要如何移动它们,即您需要定义x移动到的位置。最终你所描述的是一系列交换/替换。如果你定义什么在哪里移动,编写一个函数很容易。 – Michael

+0

因此,例如我希望x总是向前移动3个空格......在任何给定的列表中...我想创建一个适用于包含x的所有类型列表的代码。 – user2954367

0

沿着这条线也许一些:

def move (iter, from_, to): 
    iter.insert (to, iter.pop (from_)) 
+0

似乎可能会这样做...但有一个问题,这是否.pop方法从列表中取出元素,然后再添加它。像擦除和打印? – user2954367

+0

是的,它将元素从列表中取出,然后'insert'将其插入到所需的位置。 – Hyperboreus

+0

@ user2954367元素在返回(打印)后从列表中删除。 – cryptojuice