如何实现列表元素倒序打印且每个元素独占一行?
倒序打印列表元素:最优实现&代码修改方案
嘿,这个需求其实在Python里有几种高效又简洁的实现方式,先给你拆解最优思路,再帮你修改现有代码~
最优实现方式
Python处理列表倒序遍历,首推这两种方案:
- 切片反转法:用
words[::-1]直接生成反转后的新列表,语法简单易懂、可读性拉满,适合绝大多数常规场景。 - 反向迭代器:用
reversed(words),它不会创建新列表,而是返回一个迭代器遍历原列表的反向元素,内存效率更高,特别适合处理超大列表。
这两种方式的时间复杂度都是O(n),属于线性时间复杂度,是效率最高的实现方式。
现有代码修改方案
先提个小细节:原函数名用了list,这会覆盖Python内置的list类型,很容易埋下bug,所以我把函数名改成了collect_words,这是写Python代码的好习惯哦。
下面是两种修改后的代码:
方案1:切片反转(简洁直观)
def collect_words(): words = [] while True: output = input("Type a word: ") if output == "stop": break words.append(output) # else可以省略,逻辑更简洁 # 遍历反转后的切片列表,每行打印一个元素 for element in words[::-1]: print(element) collect_words()
方案2:reversed迭代器(内存友好)
如果需要处理大量数据,这个方案更省内存:
def collect_words(): words = [] while True: output = input("Type a word: ") if output == "stop": break words.append(output) # 反向迭代原列表,不生成新列表 for element in reversed(words): print(element) collect_words()
测试一下:当你依次输入i、am、programming、with、python,再输入stop,就会按python、with、programming、am、i的顺序每行打印一个元素啦~
内容的提问来源于stack exchange,提问作者bhr
相关产品推荐
相关产品推荐

