Hướng dẫn change order list python - thay đổi danh sách đơn hàng python

Với một mảng tùy ý có kích thước

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
4, tôi muốn tổ chức lại các phần tử của mảng dựa trên các chỉ số riêng biệt của mảng.

Nội dung chính

  • Làm thế nào để bạn thay đổi vị trí của một phần tử trong danh sách trong Python?
  • Đặt thứ tự thay đổi danh sách python?
  • Làm thế nào để bạn sắp xếp một danh sách theo thứ tự tăng dần trong Python?
  • Danh sách Python có đặt hàng không?

Ví dụ về Python:

# Unique array of size n
[ "a", "b", "c", "d", "e", ...  ]

# Indices of array
[ 0, 1, 2, 3, 4, ...  ]

# Desired re-organization function 'indexMove'
indexMove(
    [ "a", "b", "c", "d", "e", ...  ],
    [ , 4, 0, 2, 3, ... 1 ]
)

# Desired output from indexMove operation
[ , "e", "a", "c", "d", ... "b" ]

Cách nhanh nhất để thực hiện thao tác này (đạt được độ phức tạp thời gian nhỏ nhất) là gì?

Hướng dẫn change order list python - thay đổi danh sách đơn hàng python

hỏi ngày 1 tháng 2 năm 2010 lúc 15:08Feb 1, 2010 at 15:08Feb 1, 2010 at 15:08

8

Bạn có thể làm điều đó như thế này

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']

Fabs

1611 Huy hiệu bạc9 Huy hiệu đồng1 silver badge9 bronze badges1 silver badge9 bronze badges

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:10Feb 1, 2010 at 15:10Feb 1, 2010 at 15:10

AJ.AJ.AJ.AJ.

26.8K17 Huy hiệu vàng82 Huy hiệu bạc93 Huy hiệu Đồng17 gold badges82 silver badges93 bronze badges17 gold badges82 silver badges93 bronze badges

7

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:23Feb 1, 2010 at 15:23Feb 1, 2010 at 15:23

SilentghostsilentghostSilentGhostSilentGhost

294K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges64 gold badges301 silver badges291 bronze badges

1

>>> import random
>>> x = [1,2,3,4,5]
>>> random.shuffle(x)
>>> x
[5, 2, 4, 3, 1]

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:11Feb 1, 2010 at 15:11Feb 1, 2010 at 15:11

MarkmarkMarkMark

105K18 Huy hiệu vàng167 Huy hiệu bạc227 Huy hiệu đồng18 gold badges167 silver badges227 bronze badges18 gold badges167 silver badges227 bronze badges

3

Là thứ tự cuối cùng được xác định bởi một danh sách các chỉ số?

>>> items = [1, None, "chicken", int]
>>> order = [3, 0, 1, 2]

>>> ordered_list = [items[i] for i in order]
>>> ordered_list
[, 1, None, 'chicken']

Chỉnh sửa: Meh. AJ đã nhanh hơn ... làm thế nào tôi có thể sắp xếp lại một danh sách trong Python?

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:27Feb 1, 2010 at 15:27Feb 1, 2010 at 15:27

>>> a=["a","b","c","d","e"]
>>> a[0],a[3] = a[3],a[0]
>>> a
['d', 'b', 'c', 'a', 'e']

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:24Feb 1, 2010 at 15:24Feb 1, 2010 at 15:24

ghostdog74ghostdog74ghostdog74ghostdog74

314K55 Huy hiệu vàng252 Huy hiệu bạc340 Huy hiệu đồng55 gold badges252 silver badges340 bronze badges55 gold badges252 silver badges340 bronze badges

Bạn có thể cung cấp chức năng sắp xếp của riêng mình cho

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
5:

Phương thức Sort () có các đối số tùy chọn để kiểm soát các so sánh.

  • CMP chỉ định hàm so sánh tùy chỉnh của hai đối số (mục danh sách) sẽ trả về số âm, 0 hoặc dương tùy thuộc vào việc đối số thứ nhất được coi là nhỏ hơn, bằng hoặc lớn hơn đối số thứ hai:

    mylist = ['a', 'b', 'c', 'd', 'e']
    myorder = [3, 2, 0, 1, 4]
    mylist = [mylist[i] for i in myorder]
    print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
    
    6. Giá trị mặc định là
    mylist = ['a', 'b', 'c', 'd', 'e']
    myorder = [3, 2, 0, 1, 4]
    mylist = [mylist[i] for i in myorder]
    print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
    
    7.
  • Chính chỉ định hàm của một đối số được sử dụng để trích xuất khóa so sánh từ mỗi phần tử danh sách:

    mylist = ['a', 'b', 'c', 'd', 'e']
    myorder = [3, 2, 0, 1, 4]
    mylist = [mylist[i] for i in myorder]
    print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
    
    8. Giá trị mặc định là
    mylist = ['a', 'b', 'c', 'd', 'e']
    myorder = [3, 2, 0, 1, 4]
    mylist = [mylist[i] for i in myorder]
    print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
    
    7.
  • Đảo ngược là một giá trị boolean. Nếu được đặt thành True, thì các yếu tố danh sách được sắp xếp như thể mỗi so sánh được đảo ngược.

Nói chung, các quy trình chuyển đổi khóa và đảo ngược nhanh hơn nhiều so với việc chỉ định hàm CMP tương đương. Điều này là do CMP được gọi nhiều lần cho mỗi phần tử danh sách trong khi khóa và đảo ngược chỉ chạm vào từng phần tử một lần.

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 16:06Feb 1, 2010 at 16:06Feb 1, 2010 at 16:06

Felix Klingfelix KlingFelix KlingFelix Kling

770K172 Huy hiệu vàng1069 Huy hiệu bạc1115 Huy hiệu đồng172 gold badges1069 silver badges1115 bronze badges172 gold badges1069 silver badges1115 bronze badges

2

Nếu bạn không quan tâm nhiều về hiệu quả, bạn có thể dựa vào lập chỉ mục mảng của Numpy để làm cho nó thanh lịch:

# Unique array of size n
[ "a", "b", "c", "d", "e", ...  ]

# Indices of array
[ 0, 1, 2, 3, 4, ...  ]

# Desired re-organization function 'indexMove'
indexMove(
    [ "a", "b", "c", "d", "e", ...  ],
    [ , 4, 0, 2, 3, ... 1 ]
)

# Desired output from indexMove operation
[ , "e", "a", "c", "d", ... "b" ]
2

Đã trả lời ngày 2 tháng 11 năm 2018 lúc 8:52Nov 2, 2018 at 8:52Nov 2, 2018 at 8:52

Shaohua Lishaohua liShaohua LiShaohua Li

3453 Huy hiệu bạc8 Huy hiệu Đồng3 silver badges8 bronze badges3 silver badges8 bronze badges

Một điều nữa có thể được xem xét là cách giải thích khác như được chỉ ra bởi Darkless

Mã trong Python 2.7

Mainly:

  1. Sắp xếp lại theo giá trị - đã được giải quyết bởi AJ ở trên
  2. Sắp xếp lại theo chỉ mục

    # Unique array of size n
    [ "a", "b", "c", "d", "e", ...  ]
    
    # Indices of array
    [ 0, 1, 2, 3, 4, ...  ]
    
    # Desired re-organization function 'indexMove'
    indexMove(
        [ "a", "b", "c", "d", "e", ...  ],
        [ , 4, 0, 2, 3, ... 1 ]
    )
    
    # Desired output from indexMove operation
    [ , "e", "a", "c", "d", ... "b" ]
    
    3

Điều này sẽ in ['c', 'd', 'b', 'a', 'e']]]

Đã trả lời ngày 5 tháng 12 năm 2017 lúc 12:53Dec 5, 2017 at 12:53Dec 5, 2017 at 12:53

0

Nếu bạn sử dụng Numpy, có một cách gọn gàng để làm điều đó:

# Unique array of size n
[ "a", "b", "c", "d", "e", ...  ]

# Indices of array
[ 0, 1, 2, 3, 4, ...  ]

# Desired re-organization function 'indexMove'
indexMove(
    [ "a", "b", "c", "d", "e", ...  ],
    [ , 4, 0, 2, 3, ... 1 ]
)

# Desired output from indexMove operation
[ , "e", "a", "c", "d", ... "b" ]
4

Mã này trả về:

# Unique array of size n
[ "a", "b", "c", "d", "e", ...  ]

# Indices of array
[ 0, 1, 2, 3, 4, ...  ]

# Desired re-organization function 'indexMove'
indexMove(
    [ "a", "b", "c", "d", "e", ...  ],
    [ , 4, 0, 2, 3, ... 1 ]
)

# Desired output from indexMove operation
[ , "e", "a", "c", "d", ... "b" ]
5

Đã trả lời ngày 18 tháng 7 năm 2018 lúc 10:56Jul 18, 2018 at 10:56Jul 18, 2018 at 10:56

1

Từ những gì tôi hiểu về câu hỏi của bạn, có vẻ như bạn muốn áp dụng một hoán vị mà bạn chỉ định trên

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0. Điều này được thực hiện bằng cách chỉ định một
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0 khác (hãy gọi nó là
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
2) giữ các chỉ số của các phần tử của
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0 ban đầu sẽ xuất hiện trong
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0 được hoán vị. Sau đó, bạn sử dụng
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
2 để tạo
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0 mới bằng cách thay thế phần tử ở mỗi vị trí bằng chỉ số có vị trí đó trong
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
2.
mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
0

Bản in này

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
8.

Điều này thực sự tạo ra một

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
0 mới, nhưng nó có thể được sửa đổi một cách tầm thường để hoán vị bản gốc "tại chỗ".

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 21:49Feb 1, 2010 at 21:49Feb 1, 2010 at 21:49

MakmakMAKMAK

25.5k10 Huy hiệu vàng53 Huy hiệu bạc85 Huy hiệu Đồng10 gold badges53 silver badges85 bronze badges10 gold badges53 silver badges85 bronze badges

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
1

Đã trả lời ngày 1 tháng 2 năm 2010 lúc 15:36Feb 1, 2010 at 15:36Feb 1, 2010 at 15:36

inspectorG4dgetinspectorG4dgetinspectorG4dgetinspectorG4dget

106K25 Huy hiệu vàng137 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges137 silver badges236 bronze badges25 gold badges137 silver badges236 bronze badges

Đây là những gì tôi đã sử dụng khi tôi tình cờ thấy vấn đề này.

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
2

Ex: Đối với các chữ cái viết thường

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
3

Nó chỉ đơn giản là chỉ chuyển danh sách sang một chỉ mục được chỉ định

Đã trả lời ngày 16 tháng 4 năm 2018 lúc 19:40Apr 16, 2018 at 19:40Apr 16, 2018 at 19:40

A a rona a ronA A RonA A Ron

1272 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges2 silver badges12 bronze badges

Làm thế nào để bạn thay đổi vị trí của một phần tử trong danh sách trong Python?

Thay đổi vị trí của một phần tử trong danh sách bằng danh sách ....

Phương thức index () để lấy chỉ mục của mục trong danh sách ..

Phương thức pop () để xóa mục khỏi danh sách bằng chỉ mục của nó ..

Phương thức chèn () để chèn giá trị vào danh sách tại một chỉ mục cụ thể ..

Đặt thứ tự thay đổi danh sách python?

Không giống như trong một bộ tiêu chuẩn, thứ tự của dữ liệu trong một tập hợp được đặt hàng được bảo tồn.Chúng tôi đã sử dụng các bộ được đặt hàng khi chúng tôi cần thứ tự chúng tôi nhập dữ liệu để được duy trì trong suốt quá trình của chương trình.Trong một tập hợp được đặt hàng, nhìn vào dữ liệu không thay đổi thứ tự như trong một tập hợp không được đặt hàng.the order of the data in an ordered set is preserved. We used ordered sets when we needed the order in which we entered the data to be maintained over the course of the program. In an ordered set, looking at the data does not change its order as it would in an unordered set.the order of the data in an ordered set is preserved. We used ordered sets when we needed the order in which we entered the data to be maintained over the course of the program. In an ordered set, looking at the data does not change its order as it would in an unordered set.

Làm thế nào để bạn sắp xếp một danh sách theo thứ tự tăng dần trong Python?

Phương thức Sắp xếp () sắp xếp các phần tử của danh sách theo thứ tự tăng dần hoặc giảm dần bằng cách sử dụng toán tử . Use the key parameter to pass the function name to be used for comparison instead of the default < operator. Set the reverse parameter to True, to get the list in descending order.

Danh sách Python có đặt hàng không?

Các đặc điểm quan trọng của danh sách Python như sau: Danh sách được đặt hàng.Danh sách có thể chứa bất kỳ đối tượng tùy ý.Danh sách các yếu tố có thể được truy cập bởi Index.Lists are ordered. Lists can contain any arbitrary objects. List elements can be accessed by index.Lists are ordered. Lists can contain any arbitrary objects. List elements can be accessed by index.