programing

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

showcode 2023. 4. 10. 22:28
반응형

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

목록의 모든 문자열을 정수로 변환하려면 어떻게 해야 합니까?

['1', '2', '3']  ⟶  [1, 2, 3]

지정:

xs = ['1', '2', '3']

그 때 사용list정수 목록을 얻으려면:

list(map(int, xs))

Python 2에서는list는 목록을 반환했기 때문에 불필요했습니다.

map(int, xs)

목록에서 목록 이해 사용xs:

[int(x) for x in xs]

예.

>>> xs = ["1", "2", "3"]
>>> [int(x) for x in xs]
[1, 2, 3]

리스트내의 문자열 번호를 정수로 변환하는 방법은 몇개인가 있습니다.

Python 2.x에서는 맵 함수를 사용할 수 있습니다.

>>> results = ['1', '2', '3']
>>> results = map(int, results)
>>> results
[1, 2, 3]

여기서 함수를 적용한 후 요소 목록을 반환합니다.

Python 3.x에서는 동일한 맵을 사용할 수 있습니다.

>>> results = ['1', '2', '3']
>>> results = list(map(int, results))
>>> results
[1, 2, 3]

python 2.x와 달리 Here map 함수는 맵 객체를 반환합니다. iterator결과(값)를 하나씩 산출하기 때문에 다음과 같은 함수를 추가해야 합니다.list모든 반복 가능한 항목에 적용됩니다.

다음 이미지를 참조하여 반환값을 확인하십시오.mappython 3.x의 경우 함수와 타입입니다.

맵 함수 반복기 개체 및 해당 유형

python 2.x와 python 3.x 모두에 공통적인 세 번째 방법, 즉 List Compreptions

>>> results = ['1', '2', '3']
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]

python의 루프 단축기법을 사용하여 문자열 목록 항목을 int 항목으로 쉽게 변환할 수 있습니다.

문자열이 있다고 가정합니다.result = ['1','2','3']

그냥 해.

result = [int(item) for item in result]
print(result)

다음과 같은 출력을 얻을 수 있습니다.

[1,2,3]

목록에 순수 정수 문자열이 포함되어 있는 경우 허용되는 답변이 선택 방법입니다.정수가 아닌 것을 주면 크래시 됩니다.

따라서 ints, float 또는 기타 정보를 포함하는 데이터가 있는 경우 오류 처리를 통해 자신의 기능을 활용할 수 있습니다.

def maybeMakeNumber(s):
    """Returns a string 's' into a integer if possible, a float if needed or
    returns it as is."""

    # handle None, "", 0
    if not s:
        return s
    try:
        f = float(s)
        i = int(f)
        return i if f == i else f
    except ValueError:
        return s

data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]

converted = list(map(maybeMakeNumber, data))
print(converted)

출력:

['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']

또, 이 도우미를 사용하면, 노트북내의 반복도 취급할 수 있습니다.

from collections.abc import Iterable, Mapping

def convertEr(iterab):
    """Tries to convert an iterable to list of floats, ints or the original thing
    from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
    Does not work for Mappings  - you would need to check abc.Mapping and handle 
    things like {1:42, "1":84} when converting them - so they come out as is."""

    if isinstance(iterab, str):
        return maybeMakeNumber(iterab)

    if isinstance(iterab, Mapping):
        return iterab

    if isinstance(iterab, Iterable):
        return  iterab.__class__(convertEr(p) for p in iterab)


data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed", 
        ("0", "8", {"15", "things"}, "3.141"), "types"]

converted = convertEr(data)
print(converted)

출력:

['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed', 
 (0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order

목록 이해보다 조금 더 넓지만 마찬가지로 유용합니다.

def str_list_to_int_list(str_list):
    n = 0
    while n < len(str_list):
        str_list[n] = int(str_list[n])
        n += 1
    return(str_list)

예.

>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]

기타:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list

다음은 질문에 대한 설명과 함께 간단한 해결 방법입니다.

 a=['1','2','3','4','5'] #The integer represented as a string in this list
 b=[] #Fresh list
 for i in a: #Declaring variable (i) as an item in the list (a).
     b.append(int(i)) #Look below for explanation
 print(b)

여기서 append()는 항목(즉, 이 프로그램의 문자열(i) 정수 버전)을 목록(b) 끝에 추가하기 위해 사용됩니다.

주의: int()는 문자열 형식의 정수를 정수 형식으로 변환하는 데 도움이 되는 함수입니다.

출력 콘솔:

[1, 2, 3, 4, 5]

따라서 리스트 내의 문자열 항목을 정수로 변환할 수 있는 것은 지정된 문자열이 모두 숫자로 구성되어 있지 않으면 오류가 발생합니다.

입력 시 한 줄로 간단하게 할 수 있습니다.

[int(i) for i in input().split("")]

네가 원하는 곳으로 나눠라.

을 목록 하십시오.input().split("").

또한 Python | 목록의 모든 문자열을 정수로 변환하고 싶다.

방법 #1 : Naigive 방법

# Python3 code to demonstrate 
# converting list of strings to int 
# using naive method 

# initializing list 
test_list = ['1', '4', '3', '6', '7'] 

# Printing original list 
print ("Original list is : " + str(test_list)) 

# using naive method to 
# perform conversion 
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)) 

출력:

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

방법 #2 : 목록 이해 사용

# Python3 code to demonstrate 
# converting list of strings to int 
# using list comprehension 

# initializing list 
test_list = ['1', '4', '3', '6', '7'] 

# Printing original list 
print ("Original list is : " + str(test_list)) 

# 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)) 

출력:

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

방법 3 : map() 사용

# Python3 code to demonstrate 
# converting list of strings to int 
# using map() 

# initializing list 
test_list = ['1', '4', '3', '6', '7'] 

# Printing original list 
print ("Original list is : " + str(test_list)) 

# using map() to 
# perform conversion 
test_list = list(map(int, test_list)) 
    

# Printing modified list 
print ("Modified list is : " + str(test_list)) 

출력:

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

다음 답변은 가장 일반적인 답변일지라도 모든 상황에서 사용할 수 있는 것은 아닙니다.초저항 스러스트 스트링을 위한 솔루션이 있습니다.난 그런 게 있었어

AA = ['0', '0.5', '0.5', '0.1', '0.1', '0.1', '0.1']

AA = pd.DataFrame(AA, dtype=np.float64)
AA = AA.values.flatten()
AA = list(AA.flatten())
AA

[0.0, 0.5, 0.5, 0.1, 0.1, 0.1, 0.1]

웃을 수 있지만, 효과가 있어요.

잘못된 입력 강제 적용

int()유효하지 않은 값이 공급되면 에러가 발생합니다.팬더스의 NaN과 )to_numericbehaviors)는의 이해를 할 수 .

[int(x) if x.replace('-','', 1).replace('+','',1).isdecimal() else float('nan') for x in lst]

기본적으로 값이 10진수인지 여부(음수 또는 양수)를 확인합니다. 표기법 과과 ( (예예:1e3)는정수일 있습니다할 수 이 떨어집니다이 경우, 이해에 다른 조건을 추가할 수 있습니다(읽기 쉬운 것은 거의 없습니다).

[int(x) if x.replace('-','', 1).replace('+','',1).isdecimal() else int(e[0])*10**int(e[1]) if (e:=x.split('e',1))[1:] and e[1].isdecimal() else float('nan') for x in lst]

★★★의 lst = ['+1', '2', '-3', 'string', '4e3']는 , 을 반환합니다.[1, 2, -3, nan, 4000]약간의 조정으로 플로트도 취급할 수 있습니다만, 그것은 별개의 토픽입니다.

map()은 목록 이해보다 빠릅니다.

map()목록 이해보다 약 64% 빠릅니다.플롯에서 알수 음음음 as as as as as as as as asmap()리스트 사이즈에 관계없이 리스트 이해보다 뛰어난 퍼포먼스를 발휘합니다.

인식하다

그림을 생성하는 데 사용되는 코드:

from random import choices, randint
from string import digits
from perfplot import plot
plot(
    setup=lambda n: [''.join(choices(digits, k=randint(1,10))) for _ in range(n)],
    kernels=[lambda lst: [int(x) for x in lst], lambda lst: list(map(int, lst))],
    labels= ["[int(x) for x in lst]", "list(map(int, lst))"],
    n_range=[2**k for k in range(4, 22)],
    xlabel='Number of items',
    title='Converting strings to integers',
    equality_check=lambda x,y: x==y);

언급URL : https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-integers

반응형