티스토리 뷰

당신이 원하는 :

i.remove(j)

match_list는 목록 목록입니다.

-------------------
list_of_lists = [['g', 'h', 'i'], ['a', 'b', 'c'] ... ]]
first_list = ['i', 'am', 'an', 'old', 'man']

myList = []

for current_list in list_of_lists:
    for item in current_list:
            for word in first_list:
                        if item in word:
                                        myList.append(item)
                                                        list_of_lists.remove(item)
                                                        

나는 당신이 무엇을 하려는지 알 수 있도록 당신의 코드를 더 현명하게 읽을 수 있도록 편집했습니다.

내 생각에, 당신은 그 "하위 목록"의 항목이 다른 목록 (first_list)에 있는지 확인하기 위해 목록 집합 내에서 목록을 읽고 있습니다.

항목이 첫 번째 목록의 단어 중 하나에 있으면 list_of_lists에서 "sublist"를 제거하려고합니다. 맞습니까? 그렇다면 오류가 발생하는 곳입니다. 목록 집합의 첫 번째 반복에 있고 list_of_lists의 첫 번째 하위 목록에있는 문자 "i"가 first_list의 첫 번째 단어에 있는지 확인하고 있다고 가정 해 보겠습니다. 참으로 평가되어야합니다. 이 시점에서 파이썬에게 다음과 같이 일반 영어로 "Python, i 값을 가진 list_of_lists에서 항목을 제거하십시오."라고 말합니다. 그러나 list_of_lists에는 목록이 포함되어 있으므로 작동하지 않습니다. list_of_lists 내의 값은 문자열이 아니고 목록 만 있기 때문입니다.

해야 할 일은 현재 반복중인 목록을 지정하는 것입니다. 위 코드에서 current_list로 표시됩니다.

그래서 아마도 대신

list_of_lists.remove(item)

또는 오히려 귀하의 코드에서

match_list.remove(j) 

시험

list_of_lists.remove(current_list) 

또는 오히려 귀하의 코드에서

match_list.remove(i).

나는 당신이 다른 일치를 얻는다면 일부 시나리오에 남아있을 가능성이있는 반복에서 다른 오류를 경험할 것이라고 생각하지만, 그것은 당신이 지금 겪고있는 문제가 아닙니다 ....

-------------------

이 시도:

BTW : 당신이 사용 matchList하고 match_list게시물입니다. 나는 일관성을 유지하기 위해 내 대답을 수정했습니다.

matchList = [['g', 'h', 'i'], ['a', 'b', 'c']]
myList = []
first_list = ['i', 'am', 'an', 'old', 'man']
for i in matchList:
    for j in i:
            for word in first_list:
                        if j in word:
                                        myList.append(j)
                                                        for s in myList:
                                                                            if s in i:
                                                                                                    i.remove(s)
                                                                                                    print(myList)
                                                                                                    ['i', 'a', 'a', 'a']
                                                                                                    print(matchList)
                                                                                                    [['g', 'h'], ['b', 'c']]
                                                                                                    
-------------------

반복 후에 목록 이해를 시도 할 수 있습니다.

matchList = [['g', 'h', 'i'], ['a', 'b', 'c']]
first_list = ['i', 'am', 'an', 'old', 'man']
myList = []

for i in matchList:
    for j in i:
            for word in first_list:
                        if j in word:
                                        myList.append(j)
                                        
                                        # Remove items from sublists
                                        matchList = [[j for j in matchList[i] if j not in myList] for i in range(len(matchList))]
                                        

산출:

In [7]: myList
Out[7]: ['i', 'a', 'a', 'a']

In [8]: matchList
Out[8]: [['g', 'h'], ['b', 'c']]


출처
https://stackoverflow.com/questions/39970028
댓글
공지사항
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31