지금 나는 다음과 같은 목록을 비교 할 필요가 일부 파이썬 코드를 쓰고 있어요에서 용어를 검색하기 : 지금까지파이썬 - 가장 빠른 방법은 목록을 비교하고 목록
small_list = ["string"]*3
big_list = ["string"]*600000
big_list_excludes = ["string"]*600000
final_lines = []
for small in small_list:
final_lines = [line for line in big_list if small in big_list]
for exclude in big_list_excludes:
final_lines = [line for line in final_lines if exclude not in final_lines]
를,리스트의 천국 아주 컸다. 실행이 두 번째로 분할되었습니다. 그러나 big_list는 이제 약 60,000 개의 항목을 포함 할 수 있으며 'big_list_excludes'도 가능합니다. 누구든지 위를 단축하는 방법을 알고 있으므로 더 빠릅니다. 또한 누구나 실행 속도를 높이는 목록 외에도 사용할 수있는 다른 데이터 유형을 알고 있습니까? 이 목록에 추가해야하지만 주문을 변경할 필요는 없습니다.
또한 이러한 목록 비교는 대소 문자를 구분하지 않는 것이 좋습니다. 이전에 나는 다음과 같이함으로써 이것을 수행했다 :
for small in small_list:
for line in big_list:
if small.upper() in line.upper():
final_lines.append(line)
나는 이것이 속도를 많이 줄인다는 것을 확신한다. 더 효율적으로 그렇게하는 방법을 아는 사람이라면 도움이 될 것입니다.
목록의 모든 항목이 고유합니까? 그렇다면 당신은 교차점과 차이점을 찾고 있기 때문에 세트를 사용할 수 있습니다. –
그들은 이론적으로 고유해야합니다 ... 그러나 실제 보장은 없습니다. 중복을 갖는 것이 가능합니다. – SheerSt
중복을 보존해야합니까? 아니면 'abc'가'small_list'와'big_list' 둘 다에 존재한다는 사실입니까? 중복이있는 목록에서 집합을 만들면 여분의 중복이 제거됩니다. –