我有一个列表,我想用范围和 for 循环打印它的内容范围
I have a list and I want to print a range of it's content with range and for loop
我在 python 上有以下列表:
items = [5,4,12,7,15,9]
我想以这种形式打印:
9,15,7,12,4
我该怎么做?
numbers_list = [5,4,12,7,15,9]
for index in range(len(numbers_list)):
print(numbers_list[(index + 1) * - 1])
不确定是不是很"Pythonic"
由于列表索引被取反,您可以按相反的顺序访问元素。
Python 中的最后一个索引是列表 [-1] 依此类推,直到第一个索引是列表长度 -1(在这种情况下加一以获得更接近 0 的负数)。
使用 reversed
和 str.join
:
numbers = [5, 4, 12, 7, 15, 9]
print(",".join(str(n) for n in reversed(numbers))) # 9,15,7,12,4,5
就性能而言,str.join
比使用 mystring += "something"
构建自己的字符串要好得多。 How slow is Python's string concatenation vs. str.join? 对此提供了有趣的见解。
我也可以写一个列表理解来构建一个像这样的中间列表:
reversed_string = [str(n) for n in reversed(numbers)]
print(",".join(reversed_string))
但是写列表理解意味着我们在内存中存储了两倍的列表(原始列表和 "strigified" 列表)。使用生成器将动态计算 str.join
的元素,有点像经典迭代器所做的。
我在 python 上有以下列表:
items = [5,4,12,7,15,9]
我想以这种形式打印:
9,15,7,12,4
我该怎么做?
numbers_list = [5,4,12,7,15,9]
for index in range(len(numbers_list)):
print(numbers_list[(index + 1) * - 1])
不确定是不是很"Pythonic"
由于列表索引被取反,您可以按相反的顺序访问元素。
Python 中的最后一个索引是列表 [-1] 依此类推,直到第一个索引是列表长度 -1(在这种情况下加一以获得更接近 0 的负数)。
使用 reversed
和 str.join
:
numbers = [5, 4, 12, 7, 15, 9]
print(",".join(str(n) for n in reversed(numbers))) # 9,15,7,12,4,5
就性能而言,str.join
比使用 mystring += "something"
构建自己的字符串要好得多。 How slow is Python's string concatenation vs. str.join? 对此提供了有趣的见解。
我也可以写一个列表理解来构建一个像这样的中间列表:
reversed_string = [str(n) for n in reversed(numbers)]
print(",".join(reversed_string))
但是写列表理解意味着我们在内存中存储了两倍的列表(原始列表和 "strigified" 列表)。使用生成器将动态计算 str.join
的元素,有点像经典迭代器所做的。