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

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

myList.append(munfunc()) 

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

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

myList.append(str(myfunc()))

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



답변

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

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

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


답변

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

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


답변

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

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

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

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


답변

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

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

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


답변

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

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

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


답변

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

>>> 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']

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


답변

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

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