Hướng dẫn reverse sublist python - đảo ngược danh sách con trăn

Tôi được cho là tạo một hàm, đầu vào là một danh sách và hai số, hàm đảo ngược trình phụ mà vị trí của nó được biểu thị bằng hai số. Ví dụ, đây là những gì nó phải làm:

>>> lst = [1, 2, 3, 4, 5] 
>>> reverse_sublist [lst,0,4] 
>>> lst  [4, 3, 2, 1, 5]

Tôi đã tạo ra một chức năng và nó hoạt động, nhưng tôi không chắc nó là đúng chỗ. Đây là mã của tôi:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]

Đã hỏi ngày 7 tháng 3 năm 2014 lúc 17:53Mar 7, 2014 at 17:53

3

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst

Đã trả lời ngày 7 tháng 3 năm 2014 lúc 18:26Mar 7, 2014 at 18:26

Flakesflakesflakes

Phim huy hiệu vàng 18.4K88 gold badges36 silver badges80 bronze badges

4

Đảo ngược một phần không có danh sách tạm thời [thay thế

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
2 bằng
def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
3 nếu bạn sử dụng Python 2]:

def partial_reverse[list_, from_, to]:
    for i in range[0, int[[to - from_]/2]]:
        [list_[from_+i], list_[to-i]] = [list_[to-i], list_[from_+i]]

list_ = [1, 2, 3, 4, 5, 6, 7, 8]
partial_reverse[list_, 3, 7]
print[list_]

Đã trả lời ngày 7 tháng 3 năm 2014 lúc 18:19Mar 7, 2014 at 18:19

Valentin Lorentzvalentin LorentzValentin Lorentz

9.3536 huy hiệu vàng47 Huy hiệu bạc67 Huy hiệu đồng6 gold badges47 silver badges67 bronze badges

1

Cách dễ nhất để đảo ngược một danh sách một phần hoặc hoàn chỉnh.

listVar = ['a','b','c','d']
def listReverse[list,start,end]:
    while[start>> lst = [1, 2, 3, 4, 5] 
>>> lst[0:len[lst[3::-1]]]=lst[3::-1]
>>> lst
[4, 3, 2, 1, 5]

Hoặc, có lẽ dễ hiểu hơn:

>>> lst = [1, 2, 3, 4, 5] 
>>> sl=lst[3::-1]
>>> lst[0:len[sl]]=sl
>>> lst
[4, 3, 2, 1, 5]

Đã trả lời ngày 7 tháng 3 năm 2014 lúc 17:56Mar 7, 2014 at 17:56

Dawgdawgdawg

Phù bằng vàng 94K2323 gold badges122 silver badges200 bronze badges

3

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
5 là cách thành ngữ để đảo ngược danh sách trong Python, cho thấy cách thức và nó đã được đặt tại chỗ:

>>> lst = [1, 2, 3, 4, 5]
>>> id[lst]
12229328
>>> lst[:] = lst[::-1]
>>> lst
[5, 4, 3, 2, 1]
>>> id[lst]
12229328

Đã trả lời ngày 7 tháng 3 năm 2014 lúc 18:29Mar 7, 2014 at 18:29

Martineaumartineaumartineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

Hãy thử một số

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
6, xem Giải thích ký hiệu lát cắt của Python và //docs.python.org/2.3/whatsnew/section-slices.html

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
0

[out]:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
1

Đã trả lời ngày 7 tháng 3 năm 2014 lúc 18:42Mar 7, 2014 at 18:42

Alvasalvasalvas

109K102 Huy hiệu vàng425 Huy hiệu bạc697 Huy hiệu Đồng102 gold badges425 silver badges697 bronze badges

Tôi có hai cách để đảo ngược tại chỗ, cách đơn giản là lặp qua danh sách nửa đường, hoán đổi các yếu tố với các yếu tố gương tương ứng. Bởi yếu tố gương, ý tôi là [đầu tiên, cuối cùng], [thứ 2, 2nd-last], [thứ 3, thứ 3-đất liền], v.v.

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
2

Một cách khác tương tự như ở trên nhưng sử dụng đệ quy trái ngược với "vòng lặp":

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
3

Đã trả lời ngày 7 tháng 9 năm 2016 lúc 15:28Sep 7, 2016 at 15:28

ProfnandaaprofnandaaProfNandaa

3.0772 Huy hiệu vàng17 Huy hiệu bạc19 Huy hiệu đồng2 gold badges17 silver badges19 bronze badges

Tôi đã thực hiện một thử nghiệm nhỏ và dường như bất kỳ nhiệm vụ nào để liệt kê lát cắt đều gây ra sự phân bổ bộ nhớ:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
4

Vì vậy, bạn phải sử dụng cho Loop để đảo ngược một người phụ tại chỗ.

Tái bút: Nếu bạn muốn lặp lại bài kiểm tra này, bạn nên đảm bảo rằng SetRlimit rlImit_as hoạt động tốt trên nền tảng của bạn. Cũng ARR_SIZE có thể thay đổi cho các triển khai Python khác nhau.

Đã trả lời ngày 5 tháng 8 năm 2018 lúc 22:08Aug 5, 2018 at 22:08

Hai phương thức tại chỗ và bộ nhớ không đổi:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
5

Đã trả lời ngày 11 tháng 10 năm 2020 lúc 1:02Oct 11, 2020 at 1:02

DosentMatterDosentMatterdosentmatter

1.3841 Huy hiệu vàng14 Huy hiệu bạc22 Huy hiệu đồng1 gold badge14 silver badges22 bronze badges

Cách đơn giản nhất có lẽ là sử dụng gán lát cắt và

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
7:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
6

Bạn cũng có thể cắt và đảo ngược cùng một lúc, tuy nhiên điều này thường yêu cầu sử dụng các chỉ mục âm hoặc đặc biệt xử lý trường hợp khi

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
8, tức là:

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
7

hoặc

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
8

OTOH, sử dụng cắt lát một mình nhanh hơn giải pháp

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
7.

Đã trả lời ngày 28 tháng 3 năm 2021 lúc 12:39Mar 28, 2021 at 12:39

Eugene Yarmasheugene YarmashEugene Yarmash

136K39 Huy hiệu vàng313 Huy hiệu bạc369 Huy hiệu đồng39 gold badges313 silver badges369 bronze badges

Cách sạch hơn nhiều để làm điều này

def reverse_sublist[lst,start,end]:
    sublist=lst[start:end]
    sublist.reverse[]
    lst[start:end]=sublist
    print[lst]
9

Đã trả lời ngày 29 tháng 8 năm 2021 lúc 16:39Aug 29, 2021 at 16:39

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
0

Giả sử bạn phải đảo ngược vị trí thứ 2 đến vị trí thứ 4.

def reverse_sublist[lst,start,end]:
    lst[start:end] = lst[start:end][::-1]
    return lst
1

Output:

[1,2,5,4,3,6,7,8]

Eric Aya

69.1K35 Huy hiệu vàng178 Huy hiệu bạc249 Huy hiệu đồng35 gold badges178 silver badges249 bronze badges

Đã trả lời ngày 27 tháng 4 năm 2018 lúc 6:47Apr 27, 2018 at 6:47

1

Bài Viết Liên Quan

Chủ Đề