Skip to main content
 首页 » 编程设计

python之range 和 len 语句

2025年05月04日22cmt

我正在观看如何使用 python 绘制直方图并遇到此语句,但我不确定它的含义或工作原理。

population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48] 
 
ids = [x for x in range(len(population_ages))] 

我不确定这个声明是如何工作的。我已经尝试观看有关 len 和 range 工作原理的视频,但仍然不确定它如何应用于此语句。

ids = [..... range(len(population_ages)]  

请您参考如下方法:

其他答案已经涵盖了基础知识。

我想补充一下

ids = [x for x in range(len(population_ages))] 

是

的特化
[x for x in iterable] 

这不是很有用因为

  • 它生成 x,未从可迭代对象转换
  • 无论如何它都会产生一些东西。

列表理解在这种情况下更有用:

[f(x) for x in iterable if condition(x)] 

如果您真的想要一个列表,通过将可迭代对象传递给 list 对象来创建它会更好更快:

list(range(len(population_ages))) 

(在 python 2 中,range(len(population_ages)) 就足够了,因为它直接返回一个 list,但是如果你的代码不能移植到 python 3你真的需要一个可订阅的对象。)

另请注意,操作索引通常是错误的来源。 Python 有很多不使用索引的方式(不像 C 语言)。几个例子:

  • 它可以对值本身进行迭代
  • 它可以使用 enumerate(iterable)
  • 迭代索引+值
  • 可以使用 zip 或 itertools.zip_longest 并行处理大小相当的迭代器
  • 有内置词典

所以在使用索引之前请三思。可能有更好的方法。