예의 요소들 사이의 서로 다른 : 당신은 매우 큰 목록을 사용하는 경우파이썬 목록 : 동일 목록
Nums = [5,17,21,29]
Result = [12,16,24]
계산
absolute(5-17) = 12
absolute(5-21)
abs(5-24)
예의 요소들 사이의 서로 다른 : 당신은 매우 큰 목록을 사용하는 경우파이썬 목록 : 동일 목록
Nums = [5,17,21,29]
Result = [12,16,24]
계산
absolute(5-17) = 12
absolute(5-21)
abs(5-24)
당신이 나머지 첫 번째 요소를 빼야 할 경우,
Result = [abs(Nums[0] - item) for item in Nums[1:]]
>>> Nums = [5,17,21,29]
>>> [abs(Nums[0] - x) for x in Nums[1:]]
[12, 16, 24]
, 당신은 얕은 복사를 방지 할 수 있습니다 [1:]
itertools.islice
을 사용하십시오 (거의 필요하지 않지만).
>>> from itertools import islice
>>> [abs(Nums[0] - x) for x in islice(Nums, 1, None)]
[12, 16, 24]
첫 번째 항목에서만 작업하는 경우 다음 반복자를 만들 iter()
을 사용할 수 있습니다, 이것은 더 많은 메모리를 효율적으로 할 것
>>> n = 0
>>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
[12, 16, 24]
>>> n = 1
>>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
[12, 4, 12]
,691 : 그냥 0 번째되지 않은 인덱스 일 수 있습니다
>>> lis = [5,17,21,29]
>>> it = iter(lis)
>>> item = next(it)
>>> [abs(item - x) for x in it]
[12, 16, 24]
또 다른 방법 : @ karthikr/@ jamylak의 버전보다 큰 목록에 아마 빠른
+1 얕은 사본을 피하기 위해 목록이 거대한 경우이를 수행합니다. – jamylak
무엇이 문제입니까? – mishik