Tôi đã xem qua bài đăng này: Python: Xây dựng danh sách mới từ hiện tại bằng cách bỏ mọi yếu tố N-th, nhưng vì một số lý do, nó không hiệu quả với tôi:
Tôi đã thử theo cách này:
def drop[mylist, n]:
del mylist[0::n]
print[mylist]
Hàm này có một danh sách và
drop[[1,2,3,4],2]
0. Sau đó, nó loại bỏ mọi phần tử N-th bằng cách sử dụng N-bước khỏi danh sách và kết quả in.Đây là cuộc gọi chức năng của tôi:
drop[[1,2,3,4],2]
Đầu ra sai:
drop[[1,2,3,4],2]
1 thay vì drop[[1,2,3,4],2]
2drop[[1,2,3,4],2]
1 instead of drop[[1,2,3,4],2]
2Sau đó, tôi đã thử một biến thể từ liên kết trên:
def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
Một lần nữa, chức năng gọi:
drop[[1,2,3,4],2]
Cho tôi kết quả sai tương tự:
drop[[1,2,3,4],2]
1 thay vì drop[[1,2,3,4],2]
2Làm thế nào để loại bỏ chính xác/xóa/thả mỗi mục N-th khỏi danh sách?n-th item from a list?
CodeForester
36.3k16 Huy hiệu vàng104 Huy hiệu bạc128 Huy hiệu đồng16 gold badges104 silver badges128 bronze badges
Đã hỏi ngày 3 tháng 10 năm 2015 lúc 17:42Oct 3, 2015 at 17:42
Erba Aitbayeverba AitbayevErba Aitbayev
4.02711 Huy hiệu vàng45 Huy hiệu bạc79 Huy hiệu đồng11 gold badges45 silver badges79 bronze badges
1
Giả sử bạn có danh sách:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Nếu bạn muốn xóa mọi yếu tố K-th, bạn có thể làm điều gì đó như
del a[k-1::k]
Ví dụ với
drop[[1,2,3,4],2]
5, danh sách hiện tại hiện là[1, 2, 4, 5, 7, 8, 10]
wjandrea
25.2k8 Huy hiệu vàng53 Huy hiệu bạc74 Huy hiệu đồng8 gold badges53 silver badges74 bronze badges
Đã trả lời ngày 30 tháng 4 năm 2017 lúc 23:28Apr 30, 2017 at 23:28
1
Đầu ra là chính xác, bạn đang loại bỏ các phần tử bằng chỉ mục 0, n, 2n, .... Vì vậy, 1 và 3 được loại bỏ, 2 và 4 còn lại. Vì vậy, nếu bạn muốn in phần tử 0, n, 2n, ..., chỉ cần viết
print[mylist[::n]]
Đã trả lời ngày 3 tháng 10 năm 2015 lúc 17:48Oct 3, 2015 at 17:48
DanieldanielDaniel
41.3k4 Huy hiệu vàng55 Huy hiệu bạc80 Huy hiệu Đồng4 gold badges55 silver badges80 bronze badges
Trong hàm đầu tiên của bạn
drop[[1,2,3,4],2]
6 là drop[[1,2,3,4],2]
2 vì drop[[1,2,3,4],2]
8 có nghĩa là phần tử đầu tiên là 0 và các phần tử khác là mỗi phần tử thứ n sau lần đầu tiên. Như Daniel đề nghị, bạn có thể sử dụng drop[[1,2,3,4],2]
9, điều đó có nghĩa là mọi yếu tố thứ n.Trong chỉ mục chức năng thứ hai của bạn đang bắt đầu với 0 và
def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
0 là 0, vì vậy nó không sao chép phần tử đầu tiên. Nó giống nhau cho phần tử thứ ba [def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
1 là 0]. Vì vậy, tất cả những gì bạn cần làm là def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
2Mẹo: Bạn có thể muốn sử dụng
def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
3 thay vì def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
4 trong các chức năng như thế này.Đã trả lời ngày 3 tháng 10 năm 2015 lúc 18:08Oct 3, 2015 at 18:08
Kiến thứcknowledge
3832 Huy hiệu bạc15 Huy hiệu Đồng2 silver badges15 bronze badges
Cách tiếp cận đầu tiên của bạn có vẻ tốt với tôi - bạn chỉ cần điều chỉnh chỉ mục bắt đầu của mình nếu bạn muốn bỏ các phần tử 1, 1+n, 1+2n, ... [dường như là trường hợp]:
lst = list[range[1, 5]]
del lst[1::2]
print[lst]
Đã trả lời ngày 3 tháng 10 năm 2015 lúc 17:48Oct 3, 2015 at 17:48
Danieldanielhiro protagonist
41.3k4 Huy hiệu vàng55 Huy hiệu bạc80 Huy hiệu Đồng13 gold badges82 silver badges105 bronze badges
Trong hàm đầu tiên của bạn
drop[[1,2,3,4],2]
6 là drop[[1,2,3,4],2]
2 vì drop[[1,2,3,4],2]
8 có nghĩa là phần tử đầu tiên là 0 và các phần tử khác là mỗi phần tử thứ n sau lần đầu tiên. Như Daniel đề nghị, bạn có thể sử dụng drop[[1,2,3,4],2]
9, điều đó có nghĩa là mọi yếu tố thứ n.newList = [x for i, x in enumerate[myList] if i%n !=0]
Trong chỉ mục chức năng thứ hai của bạn đang bắt đầu với 0 và
def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
0 là 0, vì vậy nó không sao chép phần tử đầu tiên. Nó giống nhau cho phần tử thứ ba [def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
1 là 0]. Vì vậy, tất cả những gì bạn cần làm là def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
2Mẹo: Bạn có thể muốn sử dụng
def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
3 thay vì def drop[mylist, n]:
new_list = [item for index, item in enumerate[mylist] if index % n != 0]
print[new_list]
4 trong các chức năng như thế này.Jun 7, 2018 at 8:48
Đã trả lời ngày 3 tháng 10 năm 2015 lúc 18:08Eli
Kiến thức3 silver badges13 bronze badges
1