Hướng dẫn python move element to beginning of list - python di chuyển phần tử đến đầu danh sách

Tôi có một mảng với một tập hợp các yếu tố. Tôi muốn mang một yếu tố nhất định ra phía trước nhưng nếu không thì để lại thứ tự không thay đổi. Mọi người có đề xuất về cú pháp sạch nhất cho việc này không?

Show

    Đây là điều tốt nhất tôi có thể đưa ra, nhưng có vẻ như là hình thức xấu khi có hoạt động đăng nhập n khi một hoạt động N có thể làm được.

        mylist = sorted(mylist,
                        key=lambda x: x == targetvalue,
                        reverse=True)
    

    Hướng dẫn python move element to beginning of list - python di chuyển phần tử đến đầu danh sách

    Dharman ♦

    28.4K21 Huy hiệu vàng76 Huy hiệu bạc129 Huy hiệu đồng21 gold badges76 silver badges129 bronze badges

    hỏi ngày 18 tháng 6 năm 2009 lúc 18:52Jun 18, 2009 at 18:52

    1

    Tôi sẽ đi với:

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    

    Đã trả lời ngày 18 tháng 6 năm 2009 lúc 18:57Jun 18, 2009 at 18:57

    Mike Hordeckimike HordeckiMike Hordecki

    86.8K3 Huy hiệu vàng25 Huy hiệu bạc26 Huy hiệu đồng3 gold badges25 silver badges26 bronze badges

    1

    Để mang (ví dụ) phần tử thứ 6 vào phía trước, sử dụng:

    mylist.insert(0, mylist.pop(5))
    

    (Python sử dụng lập chỉ mục dựa trên tiêu chuẩn 0)

    ZF007

    3.6468 Huy hiệu vàng33 Huy hiệu bạc48 Huy hiệu đồng8 gold badges33 silver badges48 bronze badges

    Đã trả lời ngày 18 tháng 6 năm 2009 lúc 18:55Jun 18, 2009 at 18:55

    Alex Martellialex MartelliAlex Martelli

    829K164 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng164 gold badges1205 silver badges1385 bronze badges

    1

    Điều này chỉ yêu cầu hai hoạt động danh sách (không có chỉ mục): mylist.remove(targetvalue) mylist.insert(0, targetvalue)

    Đã trả lời ngày 6 tháng 2 năm 2015 lúc 16:48Feb 6, 2015 at 16:48

    Proskiproskiproski

    3,40327 Huy hiệu bạc26 Huy hiệu đồng27 silver badges26 bronze badges

    Lưu ý: Mã sau (và mã mẫu bạn cung cấp) sẽ đặt tất cả các yếu tố phù hợp ở phía trước.

    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    

    Ví dụ: nếu myList = [1, 2, 3, 4, 3] và x = 3, điều này sẽ dẫn đến [3, 3, 1, 2, 4].

    Đã trả lời ngày 18 tháng 6 năm 2009 lúc 19:03Jun 18, 2009 at 19:03

    Đầu ra

    Cải thiện bài viết

  • Lưu bài viết
  • Đọc
  • Đầu ra

    Cải thiện bài viết

    Lưu bài viết

    Đọc 
    This particular functionality can be performed in one line by combining these functions. The append function adds the element removed by pop function using the index provided by index function. 

    Python3

    test_list =

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    0
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    1
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    5__12

    mylist.insert(0, mylist.pop(5))
    
    1
    mylist.insert(0, mylist.pop(5))
    
    2

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    4
    mylist.insert(0, mylist.pop(5))
    
    5
    mylist.insert(0, mylist.pop(5))
    
    6
    mylist.insert(0, mylist.pop(5))
    
    7

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    2
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    3
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    4

    mylist.insert(0, mylist.pop(5))
    
    1
    mylist.insert(0, mylist.pop(5))
    
    2

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    4
    mylist.insert(0, mylist.pop(5))
    
    5
    mylist.insert(0, mylist.pop(5))
    
    6
    mylist.insert(0, mylist.pop(5))
    
    7

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    mylist.insert(0, mylist.pop(5))
    
    3
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    8
    mylist.insert(0, mylist.pop(5))
    
    5
    mylist.insert(0, mylist.pop(5))
    
    6
    mylist.insert(0, mylist.pop(5))
    
    7

    The original list is : ['3', '5', '7', '9', '11']
    The modified element moved list is : ['3', '7', '9', '11', '5']

    Đầu ra: & nbsp;Method #2: Using sort() + key = (__eq__) 
    The sort method can also be used to achieve this particular task in which we provide the key as equal to the string we wish to shift so that it is moved to the end. 

    Python3

    test_list =

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    0
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    1
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    5__12

    mylist.insert(0, mylist.pop(5))
    
    1
    mylist.insert(0, mylist.pop(5))
    
    2

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    4
    mylist.insert(0, mylist.pop(5))
    
    5
    mylist.insert(0, mylist.pop(5))
    
    6
    mylist.insert(0, mylist.pop(5))
    
    7

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    mylist.remove(targetvalue) mylist.insert(0, targetvalue) 0=

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3 mylist.remove(targetvalue) mylist.insert(0, targetvalue) 3

    mylist.insert(0, mylist.pop(5))
    
    1
    mylist.insert(0, mylist.pop(5))
    
    2

    mylist.insert(0, mylist.pop(5))
    
    3
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    8
    mylist.insert(0, mylist.pop(5))
    
    5
    mylist.insert(0, mylist.pop(5))
    
    6
    mylist.insert(0, mylist.pop(5))
    
    7

    mylist.insert(0, mylist.pop(5))
    
    3
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    Đầu ra: & nbsp;

    The original list is : ['3', '5', '7', '9', '11']
    The modified element moved list is : ['3', '7', '9', '11', '5']

    Phương pháp số 3: Sử dụng phương thức Remove () và Chèn ()

    Python3

    test_list =

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    0
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    1
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    5__12

    mylist.insert(0, mylist.pop(5))
    
    1=9
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    00
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    04=
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    06
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    07

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    08
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    10

    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    11
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    12
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    13
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    2
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    3
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    10

    mylist.insert(0, mylist.pop(5))
    
    1=9
    mylist.insert(0, mylist.pop(mylist.index(targetvalue)))
    
    19
    mylist.insert(0, mylist.pop(5))
    
    9
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    0
    x = targetvalue
    for i in range(len(mylist)):
        if(mylist[i] == x):
            mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]
    
    1

    Đầu ra

    The original list is : ['3', '5', '7', '9', '11']
    The modified element moved list is : ['3', '7', '9', '11', '5']