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.htmldef 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]
2Mộ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]
4Vì 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]
6Bạ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]
7hoặc
def reverse_sublist[lst,start,end]:
sublist=lst[start:end]
sublist.reverse[]
lst[start:end]=sublist
print[lst]
8OTOH, 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
0Giả 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
1Output:
[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