Hướng dẫn how do you remove every nth element from a list in python? - làm cách nào để xóa mọi phần tử thứ n khỏi danh sách trong python?

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]
2
drop[[1,2,3,4],2]
1 instead of
drop[[1,2,3,4],2]
2

Sau đó, 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]
2

Là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]
2

Mẹ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]
2

Mẹ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

Bài Viết Liên Quan

Chủ Đề