티스토리 뷰
당신이 원하는 :
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