我的計算機科學老師給我們分配了一個問題:我們必須列出前100個奇數,而不使用迭代。 我完全卡住了。Python 3:製作一個沒有迭代的奇數列表
回答
您可以使用range
生成您對您列表:
first_hundred_odd = list(range(1, 200, 2)) # get an iterator in 1..200 range with step of 2
你不需要把它變成Python的2.x的列表
UPDATE:
是,把range()
迭代器爲list
基本上執行迭代,以填補名單,但這是在語言的實現水平 - 你不range()
迭代東西:
def first_odd(num):
return list(range(1, num * 2, 2))
。
2 0 LOAD_GLOBAL 0 (list)
3 LOAD_GLOBAL 1 (range)
6 LOAD_CONST 1 (1)
9 LOAD_FAST 0 (num)
12 LOAD_CONST 2 (2)
15 BINARY_MULTIPLY
16 LOAD_CONST 2 (2)
19 CALL_FUNCTION 3 (3 positional, 0 keyword pair)
22 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
25 RETURN_VALUE
沒有跳到那裏。沒有跳轉==沒有迭代。
它在內部 - 開發人員不使用給定任務的迭代。在Python 2.x中直接使用'range()'會列出一個列表,儘管內部使用相同的原則,但是沒有人會考慮'迭代'。 – zwer
@Uriel - 你是否願意指出在上面的代碼中顯示迭代的可選代碼? 'while'循環是迭代的定義... – zwer
我不能相信我必須引用SO上的基本編程101定義:_Iteration在計算機編程中是一個過程,其中一組指令或結構以指定次數的順序重複或直到滿足條件。你不能沒有跳躍的迭代,而不是在經典的計算機硬件上。如果你要爭辯說,抽象迭代被認爲是應用級別的迭代,那麼'2 * 2'就是一個迭代......有你的方式,我不是在這裏爭論也不在教。 – zwer
你可以這樣做:
>>> list(range(200))[1::2]
沒有理由生成整個200元素列表只是爲了後來切片,讓'range()'做你的出價。 – zwer
@zwer是的,你說得對,這確實不如你的方式有效! –
- 1. 無法在Python中迭代列表3
- 2. Python列表多個迭代
- 3. 通過一個沒有唯一值的python數據框迭代
- 4. Python列表迭代
- 5. Python:迭代列表
- 6. 迭代另一個數據表的ontop數據表並製作一個表
- 7. 列表中的Python迭代
- 8. 迭代python列表:迭代順序
- 9. 迭代列表作爲對(當前下一個)在Python
- 10. 的Python - 迭代通過整數列表
- 11. Python:列表的迭代列表
- 12. 同時迭代列表的奇偶項
- 13. 將Javabeans的集合作爲一個數組列表來迭代?
- 14. Python - list.remove迭代列表時
- 15. 迭代列表python程序
- 16. 迭代通過Python列表
- 17. Python,迭代列表理解
- 18. 如何Python列表迭代?
- 19. Python - 列表迭代錯誤
- 20. 製作一個數組列表的副本,沒有它循環
- 21. 迭代通過列表的Python列表,並創建一個新的列表
- 22. Python中的Python列表和迭代器
- 23. 製作一個包含3個python代碼的腳本
- 24. 只用一個迭代器迭代兩個列表Java
- 25. 在列表完成迭代後只需要一個警告。沒有一個華納每迭代
- 26. Python的迭代邏輯:迭代中的200組列表中openpyxl
- 27. 有沒有辦法讓迭代器每3次增加一次?
- 28. 通過鏈接列表迭代時無限循環Python 3
- 29. 迭代Python列表的開始索引
- 30. ValueError迭代Python中的元組列表
答案= [1,3,5,7,...]。一旦寫出這樣的東西,就會教會循環構造的好處。 –