는 내가 좋아하는 지능형리스트를 사용하여 목록 을 만들려는 말 :.파이썬 : 이전 값을 기반으로하는 목록 이해력?
l = [100., 50., 25., 12.5, ..., a_n]
... 즉, 어떤 숫자로 시작하고 같은 목록에 그에서 N "반쪽"를 생성합니다. 나는 그것을하기위한 단순한 비단뱀의 길을 놓치고 있거나 단순히 좋은 for-loop에 의지해야 할 것이다. 이 작업을 수행 할 수 있습니까? 감사.
는 내가 좋아하는 지능형리스트를 사용하여 목록 을 만들려는 말 :.파이썬 : 이전 값을 기반으로하는 목록 이해력?
l = [100., 50., 25., 12.5, ..., a_n]
... 즉, 어떤 숫자로 시작하고 같은 목록에 그에서 N "반쪽"를 생성합니다. 나는 그것을하기위한 단순한 비단뱀의 길을 놓치고 있거나 단순히 좋은 for-loop에 의지해야 할 것이다. 이 작업을 수행 할 수 있습니까? 감사.
를?
start = 2500.0
n = 50
halves = [start/2.0**i for i in range(n)]
이 동일 :
[start * 2.0**(-i) for i in range(n)]
아마 덜 효율적 @ DeepSpace의 대답과 달리하지만, 한 줄에 나는 이것에 대한 목록 빌려 사용하는 것이 가능하다 생각하지만 것 같다
나는 OP가'n' 길이 목록을 생성하고 싶다고 생각한다. –
좋습니다, 길이 변수를 추가했습니다. – DomTomCat
발전기를 정의하고 지능형리스트에서 사용 :
def halve(n):
while n >= 1:
yield n
n /= 2
print([_ for _ in halve(100)])
>> [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
또는 단순히 목록으로 변환 : 경우
print(list(halve(100)))
>> [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
편집 @R 나르의 의견은 정확 :
def halve(start, n):
for _ in range(n):
yield start
start /= 2
print(list(halve(100, 3)))
>> [100, 50.0, 25.0]
print(list(halve(100, 4)))
>> [100, 50.0, 25.0, 12.5]
OP는 'n'개의 반수를 의미하므로 'n = 100'인 경우 100 개의 숫자 목록을 반환해야한다고 생각합니다. –
발전기의 좋은 유스 케이스. –