Python에서 문자열과 다른 유형의 항목 목록에 참여


292

아이템 목록에 가입해야합니다. 목록의 많은 항목은 함수에서 반환 된 정수 값입니다. 즉,

myList.append(munfunc()) 

반환 된 결과를 목록과 결합하기 위해 문자열로 어떻게 변환해야합니까?

모든 정수 값에 대해 다음을 수행해야합니까?

myList.append(str(myfunc()))

캐스팅 문제를 해결하는 더 파이썬적인 방법이 있습니까?


3
사람들이 게시하기 전에 질문 한 내용을 이해하거나 질문을 다시 읽을 수 있도록 올바른 문법을 사용해야합니다.
allyourcode

답변:


538

호출 str(...)은 무언가를 문자열로 변환하는 파이썬 방식입니다.

문자열 목록을 원하는 이유를 고려할 수 있습니다. 대신 정수 목록으로 유지하고 정수를 표시해야 할 때만 문자열로 변환 할 수 있습니다. 예를 들어 정수 목록이 있으면 for 루프에서 하나씩 하나씩 변환하고 다음과 결합 할 수 있습니다 ,.

print(','.join(str(x) for x in list_of_ints))

175

str에 정수를 전달해도 아무런 문제가 없습니다. 이렇게하지 않을 수있는 한 가지 이유는 myList가 실제로 정수 목록이어야한다는 것입니다. 예를 들어 목록의 값을 합산하는 것이 합리적입니다. 이 경우 myList에 추가하기 전에 int를 str에 전달하지 마십시오. 추가하기 전에 문자열로 변환하지 않으면 다음과 같은 작업을 수행하여 하나의 큰 문자열을 구성 할 수 있습니다

', '.join(map(str, myList))

36
아마도 영어는 그의 모국어가 아닙니다. 그가 자신이 변환하고있는 많은 항목의 목록에 참여하고 싶다는 확신이 str없습니까? 파서에 퍼지 논리를 추가해야 할 가능성을 고려하십시오. ;-)
John Machin

3
@ 존 나는 그것을 고려했지만, 그가 영어에 능숙하다면, 부드럽게 영어를 수준으로 끌어 올리고 싶었습니다. 내 대답은 그가에서 할 수있는 다양한 해석과 상황을 즐겁게 않습니다 생각합니다.
allyourcode

41

파이썬에서 map 함수를 사용할 수 있습니다. 두 가지 주장이 필요합니다. 첫 번째 인수는 목록의 각 요소에 사용해야 하는 함수 입니다. 두 번째 주장은 iterable 입니다.

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

목록을 문자열로 변환 한 후 단순 결합 기능을 사용하여 목록을 단일 문자열로 결합 할 수 있습니다.

a = map(str, a)    
''.join(a)      
'123'

10
a=[1,2,3]
b=[str(x) for x in a]
print b

위의 방법은 목록을 문자열로 변환하는 가장 쉽고 가장 일반적인 방법입니다. 또 다른 짧은 방법은

a=[1,2,3]
b=map(str,a)
print b

4

이를 수행하는 세 가지 방법이 있습니다.

정수 목록이 있다고 가정 해 봅시다.

my_list = [100,200,300]
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

그러나 파이썬 웹 사이트 ( https://docs.python.org/2/library/timeit.html) 의 timeit 예제에 명시된 것처럼 맵을 사용하는 것이 더 빠릅니다. 그래서 당신이 사용하는 것이 좋습니다"-".join(map(str, my_list))


2

당신의 문제는 분명합니다. 다른 목록의 모든 요소를 ​​기존 목록에 추가하기 위해 확장을 원할 수도 있습니다.

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

정수를 문자열로 변환하려면 str () 또는 문자열 보간을 사용하십시오.

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

이 모든 것은 피 토닉으로 간주됩니다.


2

예를 들면 다음과 같습니다.

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

나에 관해서는 str각 str 목록 앞에 다음 을 추가하고 싶습니다 .

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

또는 단일 목록 :

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

1

어쩌면 숫자로 문자열이 필요하지 않을 수도 있습니다.

functaulu = [munfunc(arg) for arg in range(loppu)]

나중에 문자열로 필요한 경우 문자열 또는 형식 문자열을 사용하여 수행 할 수 있습니다.

print "Vastaus5 = %s" % functaulu[5]


-1

아무도 안 좋아하는 것 같아 repr?
파이썬 3.7.2 :

>>> int_list = [1, 2, 3, 4, 5]
>>> print(repr(int_list))
[1, 2, 3, 4, 5]
>>> 

그러나주의를 기울이십시오. 그것은 명백한 표현입니다. 예는 다음과 같습니다.

#Print repr(object) backwards
>>> print(repr(int_list)[::-1])
]5 ,4 ,3 ,2 ,1[
>>> 

pydocs-repr 에서 더 많은 정보

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.