logo

파이썬 | 목록의 모든 문자열을 정수로 변환

데이터 유형 간의 상호 변환은 Python 라이브러리를 통해 매우 쉽게 촉진됩니다. 그러나 전체 문자열 목록을 정수로 변환하는 문제는 개발 영역에서 매우 일반적입니다. 이 특정 문제를 해결하는 몇 가지 방법을 논의해 보겠습니다.

eval()을 사용하여 목록의 모든 문자열을 정수로 변환

Python eval() 함수 표현식 인수를 구문 분석하고 이를 Python 표현식으로 평가하고 Python 표현식(코드)을 실행합니다. 표현식이 int 표현인 경우 Python은 인수를 정수로 변환합니다.

파이썬3






lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> res>=> [>eval>(i)>for> i>in> lis]> print>(>'Modified list is: '>, res)>

>

>

자바 웹 서비스

산출:

Modified list is: [1, -4, 3, -6, 7]>

목록의 모든 문자열을 정수로 변환 순진한 방법

이는 이러한 종류의 작업을 수행하는 동안 모든 프로그래머에게 충격을 주는 가장 일반적인 방법입니다. 전체 목록을 반복하고 유형 캐스팅을 통해 목록의 각 문자열을 int로 변환하면 됩니다.

파이썬3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using loop> for> i>in> range>(>0>,>len>(test_list)):> >test_list[i]>=> int>(test_list[i])> # Printing modified list> print>(>'Modified list is : '> +> str>(test_list))>

>

>

산출:

Modified list is: [1, 4, 3, 6, 7]>

목록의 모든 문자열을 정수로 변환 목록 이해

이것은 개발자가 항상 찾는 일종의 단축어인 목록 이해를 사용하여 구현된 위 방법의 일종의 복제일 뿐입니다. 솔루션 코딩에 소요되는 시간과 복잡성을 줄여줍니다.

파이썬3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using list comprehension to> # perform conversion> test_list>=> [>int>(i)>for> i>in> test_list]> > # Printing modified list> print> (>'Modified list is : '> +> str>(test_list))>

>

>

산출:

Modified list is : [1, 4, 3, 6, 7]>

목록의 모든 문자열을 정수로 변환 지도()

이는 이 특정 작업을 수행하는 데 가장 우아하고 파이썬적이며 권장되는 방법입니다. 이 기능은 이러한 작업을 위해서만 만들어진 기능이므로 이를 수행하는데 사용해야 합니다.

파이썬3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using map() to> # perform conversion> test_list>=> list>(>map>(>int>, test_list))> # Printing modified list> print>(>'Modified list is : '> +> str>(test_list))>

>

>

산출:

Modified list is : [1, 4, 3, 6, 7]>

목록의 모든 문자열을 정수로 변환 혼합 정수 표현이 있는 문자열 목록

여기서는 먼저 각 문자열을 float로 변환한 다음 round() 함수를 사용하여 정수로 변환합니다. 그렇지 않으면 오류가 발생합니다.

파이썬3




lis>=> [>'1.1'>,>'4'>,>'3.5'>,>'6.7'>,>'7.2'>]> res>=> [>round>(>float>(i))>for> i>in> lis]> print>(>'Modified list is: '>, res)>

>

>

산출:

Modified list is: [1, 4, 4, 7, 7]>

ast 모듈의 ast.literal_eval() 함수를 사용하여 목록의 모든 문자열을 정수로 변환

문자열 목록을 정수 목록으로 변환하는 데 사용할 수 있는 또 다른 접근 방식은 ast 모듈의 ast.literal_eval() 함수를 사용하는 것입니다. 이 함수를 사용하면 문자열을 Python 리터럴로 평가할 수 있습니다. 즉, 숫자, 목록, 사전 등과 같은 Python 표현식이 포함된 문자열을 구문 분석하고 평가할 수 있습니다.

다음은 ast.literal_eval()을 사용하여 문자열 목록을 정수 목록으로 변환하는 방법의 예입니다.

파이썬3




import> ast> # Initialize list of strings> test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # Convert strings to integers using ast.literal_eval()> test_list>=> [ast.literal_eval(s)>for> s>in> test_list]> # Print resulting list> print>(>'Modified list:'>, test_list)> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

산출

Modified list: [1, 4, 3, 6, 7]>

문자열 목록을 정수 목록으로 변환하기 위해 ast 모듈의 ast.literal_eval() 함수를 사용하는 데 따른 시간 복잡도는 O(n)입니다. 여기서 n은 목록의 길이입니다. 이는 이 접근 방식을 실행하는 데 필요한 시간이 입력 목록의 크기에 정비례한다는 것을 의미합니다.

공간 복잡도 측면에서 이 접근 방식은 입력 목록과 동일한 크기의 새로운 정수 목록을 생성하기 때문에 O(n)의 공간 복잡도를 갖습니다.

numpy.array() 함수를 사용하여 목록의 모든 문자열을 정수로 변환

  1. 문자열 목록 정의
  2. numpy.array() 함수를 사용하여 목록을 int 유형의 numpy 배열로 변환합니다.
  3. 다음을 사용하여 numpy 배열을 다시 목록으로 변환합니다. 목록() 함수
  4. 수정된 목록 인쇄

파이썬3




import> numpy as np> > # Define list of strings> my_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> > # Convert list to numpy array of type int> my_array>=> np.array(my_list, dtype>=>int>)> > # Convert numpy array back to list> modified_list>=> list>(my_array)> > # Print modified list> print>(>'Modified list is: '>, modified_list)>

>

>

산출:

Modified list is: [1, 4, 3, 6, 7]>

시간 복잡도: 이 접근 방식의 시간 복잡도는 O(n)입니다. 여기서 n은 목록의 길이입니다. numpy.array() 함수는 새 배열을 만드는 데 O(n) 시간이 걸리고, list() 함수는 배열을 다시 목록으로 변환하는 데 O(n) 시간이 걸립니다.

공간 복잡도: 이 접근 방식의 공간 복잡도는 O(n)입니다. 입력 목록과 동일한 크기의 int 유형의 새로운 numpy 배열을 생성하기 때문입니다.

접근 방식: json.loads() 함수 사용:

연산:

  1. ['1', '4', '3', '6', '7'] 값을 사용하여 test_list 문자열 목록을 만듭니다.
  2. Join() 메소드를 사용하여 test_list의 문자열을 쉼표와 함께 결합하면 문자열 '1,4,3,6,7'이 생성됩니다.
  3. 결과 문자열 주위에 대괄호를 추가하면 '[1,4,3,6,7]' 문자열이 생성됩니다.
    json 라이브러리의 load() 메서드를 사용하여 문자열을 JSON 배열로 구문 분석하면 목록 [1, 4, 3, 6, 7]이 생성됩니다.
  4. 결과 목록을 new_list에 할당합니다.
  5. Modified list is : 문자열을 인쇄하고 그 뒤에 new_list의 문자열 표현이 옵니다.

파이썬3




import> json> test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> new_list>=> json.loads(>'['> +> ','>.join(test_list)>+> ']'>)> print>(>'Modified list is : '> +> str>(new_list))> #This code is contributed by Vinay pinjala>

>

>

산출

Modified list is : [1, 4, 3, 6, 7]>

시간 복잡도: O(n), 여기서 n은 test_list의 길이입니다. 이는 Join() 메서드가 문자열을 연결하는 데 O(n) 시간이 걸리고, load() 메서드가 결과 문자열을 구문 분석하는 데 O(n) 시간이 걸리기 때문입니다.

공간 복잡도: O(n), 결과 목록은 메모리에서 O(n) 공간을 차지하기 때문입니다.

re 모듈을 사용하여 목록의 모든 문자열을 정수로 변환

문자열 목록에서 숫자 값을 추출하기 위한 정규식 접근 방식의 단계별 알고리즘

bool을 문자열로 변환 java
  1. 문자열의 입력 목록을 정의합니다.
  2. 문자열의 숫자 값과 일치하도록 정규식 패턴을 정의합니다.
  3. 변환된 숫자 값을 저장하기 위해 빈 목록을 초기화합니다.
  4. 입력 목록의 각 문자열을 반복합니다.
  5. 정규식 패턴을 사용하여 문자열에서 숫자 값을 검색합니다.
  6. 일치하는 항목이 발견되면 일치하는 부분 문자열을 추출하여 부동 소수점으로 변환합니다.
  7. 변환된 값을 출력 목록에 추가합니다.
  8. 입력 목록의 모든 문자열이 처리되면 출력 목록을 반환합니다.

파이썬3




import> re> # Define the input list> lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> # Define a regular expression pattern to match numerical values> pattern>=> re.>compile>(r>'-?d+(?:.d+)?'>)> # Initialize an empty list to store converted values> res>=> []> # Iterate over each string in the input list> for> s>in> lis:> ># Use the pattern to search for a numerical value in the string> >match>=> pattern.search(s)> ># If a match is found, extract the matched substring and convert it to a float> >if> match>is> not> None>:> >res.append(>int>(match.group()))> # Print the modified list of converted values> print>(>'Modified list is: '>, res)>

>

>

산출

Modified list is: [1, -4, 3, -6, 7]>

시간 복잡도: 이 접근 방식의 시간 복잡도는 O(nm)입니다. 여기서 n은 입력 목록의 문자열 수이고 m은 목록에 있는 문자열의 최대 길이입니다. 정규식 패턴은 목록의 각 문자열에 적용되어야 하며 최악의 경우 O(m) 시간이 걸립니다. 따라서 전체적인 시간복잡도는 O(nm)이다.
보조 공간 복잡성: 이 접근법의 보조 공간 복잡도는 O(k)입니다. 여기서 k는 입력 목록의 숫자 값 수입니다. 변환된 각 숫자 값을 출력 목록에 저장해야 하는데, 이를 위해서는 O(k) 공간이 필요합니다. 또한 일정한 공간이 필요한 정규식 개체를 저장해야 합니다. 따라서 전체적인 보조공간 복잡도는 O(k)이다.