01/10/2018, 15:56
So sánh phần tử trong list
Mình có dòng code như sau:
for n in listSV:
for m in listSVTKB:
for l in listMH:
if n in m:
if m+1 in n and l+2 == 2:
stcID = stcID + 1
Lỗi:
if m+1 in n and l+2 == 1:
TypeError: must be str, not int
-listSV, listSVTKB, listMH là các list chứa các phần tử.
- cho m là phần tử thứ 0 trong listSVTKB mình muốn lấy phần tử thứ 1 tức m+1 và so sánh xem nó có nằm trong listSV và so sánh phần tử l+2 có bằng 1 hay không thì mình phải code như thế nào cho đúng mong mọi người giúp đỡ. Cảm ơn mọi người đã đọc bài viết.
Bài liên quan
Không phải lúc nào cũng cần dùng for loop with iterator. Hãy dùng indexing, vì nó thật sự hữu hiệu khi cần tìm phần tử sau nó 1, 2 phần tử.
Bạn có thể cho ví dụ được không?
Theo code của bạn, mình demo bừa thử:
ý mình muốn là nếu có bất kì phần tử nào trong listSV có ở trong listSVTKB thì mình muốn lấy phần tử tiếp theo của phần tử ấy.vd như trong java chỉ cần list.get(x+1) mình chỉ cần +1 là có dc vị trí tiếp theo của x nhưng trong python mình không biết phải code s
Dùng for loop index của mảng thôi. Dùng hàm tìm kiếm theo iterator rất lâu.
Góp ý với bạn, là bạn hãy đặt những tên biến có nghĩa như soSV, maSV,… thay vì những tên vô nghĩa như n, m, l, rất khó debug.
mình có search tren stackoverflow sửa lại sử dụng theo index thì nó báo lỗi mới như này
if listSVTKB[m+1] in listMH[l] and listMH[l+2] == 1:
IndexError: list index out of range
Thì bạn phải chặn index xem chạy đến bao nhiêu là đủ.
m == len(listSVTKB) - 1
thì làm sao có phần tử listSVTKB[m+1]? Tương tự với trường hợp listMH.mình chưa biết cách chặn bằng python bạn có thể chỉ giáo
Thêm 1 chút vào range thôi chứ có gì đâu.
mình chạy được rồi tks bạn nhiều. Mong bạn chỉ giáo thêm nữa.