30/09/2018, 19:52

Lỗi danh sách trong python

Chào mọi các bác.em có chút vấn đề mong các bác giúp đỡ.
em có hai danh sách.
danh sách 1:gồm 100 phần tử khác nhau.
danh sách 2:gồm 20 chỉ mục của danh sách 1.
bh em muốn sử dụng for để xóa các phần tử trong ds1 theo chỉ mục của danh sách 2.
em làm mãi mà không được.mong các bác chỉ giáo.
đây là code của em.

for i in array_new:
       del array[i]

trong đó:
array new là ds 2,
array là ds1
i là phần tử trong danh sách 2. cũng là chỉ mục của danh sách 1.

còn đây là lỗi của nó: IndexError: list assignment index out of range

Mong các bác giúp đỡ
Cảm ơn!!

htl@PyMI.vn viết 21:56 ngày 30/09/2018

Sau khi del a[i] thì phần tử đó đã mất khỏi a. Index sẽ ko còn đúng nữa
Cách làm là có thể set a[i] thành 1 giá trị nào đó, vd 'to-be-deleted' ko trùng với các item khác, sau đó mới dùng if để check rồi del thì ko liên quan đến index nữa

Gió viết 21:56 ngày 30/09/2018
del_cnt=0
for i in del_ind:
    del array[i-del_cnt]
    del_cnt+=1
#hoặc
for del_cnt,i in enumerate(del_ind):
    del array[i-del_cnt]
vimanh viết 21:56 ngày 30/09/2018

bạn nói rõ hơn được không mình mới học nên k hiểu cho lắm.
thanks;

Gió viết 22:06 ngày 30/09/2018

Ví dụ A=[a,b,c,d] khi bạn del A[1] chẳng hạn thì mảng A sẽ là [a,c,d] khi đo các vị trí mảng A sẽ cập nhật từ i thành i-del_cnt (del_cnt là số phần tử A đã xoá). Nên bây giờ muốn xoá A[3] trong list đầu <=> xoá A[3-1] trong list A (khi bị xoá A[1])

vimanh viết 21:56 ngày 30/09/2018

cảm ơn bạn.mình làm theo bạn và đã thành công.mặc dù vẫn còn hơi lơ mơ 1 tí.
klq:nhưng hình như mình avt của bạn tong video của anh ltd.
mình có thể add skype bạn k??

Bài liên quan
0