it-source

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

criticalcode 2022. 12. 29. 20:31
반응형

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

문자열이 포함된 튜플이 있습니다.

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

모든 문자열 요소를 정수로 변환하고 목록으로 되돌립니다.

T2 = [[13, 17, 18, 21, 32],
      [7, 11, 13, 14, 28],
      [1, 5, 6, 8, 15, 16]]

관련:

int() 는 문자열을 정수값으로 변환하기 위한 Python 표준 내장 함수입니다.인수로 숫자를 포함하는 문자열을 사용하여 호출하면 정수로 변환된 번호가 반환됩니다.

>>> int("1") + 1
2

리스트의 구조인 T1을 알고 있는 경우(단순히 리스트가 포함되어 있는 것, 1레벨만) Python 3에서는 다음과 같이 할 수 있습니다.

T2 = [list(map(int, x)) for x in T1]

Python 2의 경우:

T2 = [map(int, x) for x in T1]

이 작업은 목록 이해로 수행할 수 있습니다.

T2 = [[int(column) for column in row] for row in T1]

내부 리스트의 이해([int(column) for column in row])는,listint일련의 s에서int- 10진수 문자열과 같은 사용 가능한 객체row외부 리스트의 이해([... for row in T1]))는 의 각 항목에 적용된 내부 목록 이해 결과 목록을 작성합니다.T1.

행 중 하나에 변환할 수 없는 개체가 포함되어 있으면 코드 스니펫이 실패합니다.int. 10진수 이외의 문자열을 포함하는 행을 처리하려면 보다 스마트한 함수가 필요합니다.

행의 구조를 알고 있는 경우는, 내부 리스트의 이해를 행의 함수에의 호출로 치환할 수 있습니다.예.

T2 = [parse_a_row_of_T1(row) for row in T1]

목록 압축만 사용:

[[int(y) for y in x] for x in T1]

퍼팅 대신int( ),놓다float( )소수점과 정수를 함께 사용할 수 있습니다.

나는 지금까지의 모든 대답에 동의했지만 문제는 모든 정수를 가지고 있지 않으면 정수가 무너진다는 것이다.

정수 이외의 값을 제외하려면

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))
new_list = list(list(int(a) for a in b) for b in T1 if a.isdigit())

실제 자리수만 출력됩니다.내가 직접 리스트 컴파션을 사용하지 않는 이유는 리스트 컴파션은 내부 변수를 누설하기 때문이다.

이거 먹어봐.

x = "1"

x는 따옴표로 둘러싸인 문자열이지만 숫자가 포함되어 있습니다.

x = int(x)

x에 숫자 1이 있기 때문에 정수로 바꿀 수 있습니다.

문자열이 숫자인지 확인하려면 다음과 같이 하십시오.

def is_number(var):
    try:
        if var == int(var):
            return True
    except Exception:
        return False

x = "1"

y = "test"

x_test = is_number(x)

print(x_test)

x는 숫자이기 때문에 IDLE True로 출력됩니다.

y_test = is_number(y)

print(y_test)

숫자가 y가 아니기 때문에 IDLE False로 출력됩니다.

T3=[]

for i in range(0,len(T1)):
    T3.append([])
    for j in range(0,len(T1[i])):
        b=int(T1[i][j])
        T3[i].append(b)

print T3

목록 압축 사용:

t2 = [map(int, list(l)) for l in t1]

이 기능을 참조해 주세요.

def parse_int(s):
    try:
        res = int(eval(str(s)))
        if type(res) == int:
            return res
    except:
        return

그리고나서

val = parse_int('10')  # Return 10
val = parse_int('0')  # Return 0
val = parse_int('10.5')  # Return 10
val = parse_int('0.0')  # Return 0
val = parse_int('Ten')  # Return None

확인하실 수도 있습니다.

if val == None:  # True if input value can not be converted
    pass  # Note: Don't use 'if not val:'

Python 2의 또 다른 기능 솔루션:

from functools import partial

map(partial(map, int), T1)

Python 3은 조금 지저분합니다.

list(map(list, map(partial(map, int), T1)))

우리는 포장지로 이것을 고칠 수 있다.

def oldmap(f, iterable):
    return list(map(f, iterable))

oldmap(partial(oldmap, int), T1)

Python 3.5.1에서는 다음과 같이 동작합니다.

c = input('Enter number:')
print (int(float(c)))
print (round(float(c)))

그리고.

Enter number:  4.7
4
5

만약 그것이 튜플의 수두룩이라면, 뭐랄까.rows=[map(int, row) for row in rows]f,) a in (f, lst)로 하다[f(a) for a in lst]라고 합니다.

평가란 당신이 원하는 것이 아닙니다. 만약 그런 일이 있다면__import__("os").unlink("importantsystemfile")데이터베이스에 저장해야 합니다.항상 입력을 검증합니다(다른 입력이 없는 경우 입력이 잘못된 경우 예외 int()가 발생합니다).

Python은 함수 int(string)와 옵션 파라미터 베이스가 내장되어 있습니다.

문자열에 Integer 값이 포함되어 있으면 해당 값이 대응하는 Integer 값으로 변환됩니다.단, 10진수를 문자열로 사용하는 경우 변환하려면 float()가 필요합니다.

사용방법:

a = '22'
b = int(a)

그리고.

if a = '22.22'
b = int(a) '''will give error, invalid literal for int().'''
b = float(a) '''will convert the string.'''

여기에서는 아직 언급되지 않은 것 같은 옵션을 공유하겠습니다.

rumpy.random.permutation(x)

어레이 x의 랜덤 치열을 생성합니다.필요한 것은 아니지만, 유사한 질문에 대한 잠재적인 해결책입니다.

다음과 같은 작업을 수행할 수 있습니다.

T1 = (('13', '17', '18', '21', '32'),  
     ('07', '11', '13', '14', '28'),  
     ('01', '05', '06', '08', '15', '16'))  
new_list = list(list(int(a) for a in b if a.isdigit()) for b in T1)  
print(new_list)  

언급URL : https://stackoverflow.com/questions/642154/how-do-i-convert-all-strings-in-a-list-of-lists-to-integers

반응형