반응형
목록의 각 요소를 int로 어떻게 나누나요?
목록의 각 요소를 int로 나누고 싶습니다.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
오류는 다음과 같습니다.
TypeError: unsupported operand type(s) for /: 'list' and 'int'
이 오류가 발생하는 이유를 이해합니다.하지만 해결책을 찾지 못해 답답합니다.
시도:
newList = [ a/b for a, b in (myList,myInt)]
오류:
ValueError: too many values to unpack
예상 결과:
newList = [1,2,3,4,5,6,7,8,9]
편집:
다음 코드는 제 예상 결과를 제공합니다.
newList = []
for x in myList:
newList.append(x/myInt)
하지만 이를 위한 더 쉽고 빠른 방법이 있을까요?
관용적인 방법은 목록 이해를 사용하는 것입니다.
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [x / myInt for x in myList]
또는 원본 목록에 대한 참조를 유지해야 하는 경우:
myList[:] = [x / myInt for x in myList]
처음 시도한 방법은 실제로 numpy로 직접 가능합니다.
import numpy
myArray = numpy.array([10,20,30,40,50,60,70,80,90])
myInt = 10
newArray = myArray/myInt
만약 당신이 긴 목록과 특히 어떤 종류의 과학 컴퓨팅 프로젝트에서도 그런 작업을 한다면, 저는 정말로 numpy를 사용하는 것을 추천합니다.
>>> myList = [10,20,30,40,50,60,70,80,90]
>>> myInt = 10
>>> newList = map(lambda x: x/myInt, myList)
>>> newList
[1, 2, 3, 4, 5, 6, 7, 8, 9]
추상 버전은 다음과 같습니다.
import numpy as np
myList = [10, 20, 30, 40, 50, 60, 70, 80, 90]
myInt = 10
newList = np.divide(myList, myInt)
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [i/myInt for i in myList]
myInt=10
myList=[tmpList/myInt for tmpList in range(10,100,10)]
list = [2,4,8]
new_list = [x//2 for x in list]
print(new_list)
출력:
[1, 2, 4]
저는 많은 수를 위한 가장 빠른 방법이 무엇인지 알아보기 위해 몇 가지 답변을 실행하고 있었습니다.그래서 저는 int를 배열로 변환할 수 있고 정확한 결과를 제공할 수 있고 더 빠르다는 것을 발견했습니다.
arrayint=np.array(myInt)
newList = myList / arrayint
위의 모든 답변을 비교한 것입니다.
import numpy as np
import time
import random
myList = random.sample(range(1, 100000), 10000)
myInt = 10
start_time = time.time()
arrayint=np.array(myInt)
newList = myList / arrayint
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = np.array(myList) / myInt
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = [x / myInt for x in myList]
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
myList[:] = [x / myInt for x in myList]
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = map(lambda x: x/myInt, myList)
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = [i/myInt for i in myList]
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = np.divide(myList, myInt)
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
newList = np.divide(myList, myInt)
end_time = time.time()
print(end_time-start_time)
언급URL : https://stackoverflow.com/questions/8244915/how-do-you-divide-each-element-in-a-list-by-an-int
반응형
'programing' 카테고리의 다른 글
Wordpress 페이지 URL이 잘못된 페이지로 이동합니다. (0) | 2023.06.11 |
---|---|
SignalR에서 특정 클라이언트 호출 (0) | 2023.06.11 |
플라스크 SQL 화학 쿼리, 열 이름 지정 (0) | 2023.06.11 |
GoDaddy의 TXT 레코드를 검증하지 않는 파이어베이스 호스팅 (0) | 2023.06.11 |
PHP 스프레드시트: 로드된 행 수를 가져오는 방법은 무엇입니까? (0) | 2023.06.11 |