나는 큰 목록 인 indexes
을 가지고 있습니다. 목록의 각 항목은 2 개의 정수를 포함하는 튜플입니다. 정수는 하나의 큰 문자열로 연결하려는 일련의 하위 문자열에 대한 시작 및 끝 인덱스를 나타냅니다.Python - 일련의 문자열을 결합하는 가장 빠른 방법
예를 들어, indexes
목록에 다음과 같이 보이는 2 개의 항목 만있는 경우 : [(1, 5), (10,15)]
색인 위치 1과 5 사이의 문자와 색인 위치 10-15 사이의 문자로 구성된 출력 문자열이 필요합니다. .. IE는이 두 슬라이스를 연결합니다.
좀 더 구체적으로 - 내 주요 문자열은 실제로 많은 수의 16 진수 문자열 버전입니다. 궁극적으로 최종 문자열을 바이너리 버전으로 변환 한 다음 파일에 쓰게 될 것입니다. 현재 내 프로세스는 대용량 데이터 세트에 정말 느리고 다음과 같습니다
def combineFrames(indexes, largeString):
'''
input1 = list of all indexes for start/end of substring
input2 = the larger String from which the substrings are being pulled
returns a single string that consists of all substrings concatenated together...
function also generates a new file that consists of the binary version of the concatenated substrings
'''
final_string = ""
for seq in indexes:
final_string += hexString[seq[0]:seq[1]]
fullFile = binascii.unhexlify(final_string)
with open("d:\\output_File", 'wb') as f:
f.write(fullFile)
return fullFile
현재 위는 정말 천천히 나는 그것을 속도를하는 방법이있다 생각한다. 생각?
'정말 느린가'? 어떤 크기의 입력에 대해? 얼마나 빠를까요? 이것에 대한 프로파일을 만들었습니까? – pvg
저는 코딩에 많은 멍청한 반응을 보입니다. 몇 달 동안 만이 작업을 수행 했으므로 다른 옵션이나이를 프로파일하는 방법을 모르겠습니다 ... 질문은 다음을 반복하는 가정 때문에 게시됩니다. 인덱스는 아마도 인덱스를 처리하는 가장 좋은 방법이 아니며 검색하는 동안 다른 방법을 찾을 수 없습니다. 질문을 할 수있는 더 좋은 방법이 있습니까 (나중에 참조 할 것임) – occvtech
대부분이 질문 중 일부를 스스로 해결하려합니다 - 얼마나 빨리 실행됩니까? 입력의 크기/유형은 무엇입니까? 목표는 무엇입니까? 프로파일 링은 시간을 많이 차지하는 코드 부분을 파악하는 데 도움이되지만 초기에는 경과 시간을 측정하는 것이 좋은 시작입니다. 또 다른 좋은 방법은 전체적인 최적화 접근법이 완전히 다른 경우가 있으므로 해결하려는 일반적인 문제를 간략하게 설명하는 것입니다. 일반적으로 모든 성과 관련 작업에 대해, 질문이든 아니든,보다 구체적인 측정 및 목표 일수록 좋습니다. – pvg