python:我怎么知道我什么时候在最后一个周期

l--*_*''' -1 python syntax

for i in range(len(results_histogram)):
    if i!=len(results_histogram)-1:
      url+=str(results_histogram[i])+','
Run Code Online (Sandbox Code Playgroud)

我的if语句正在检查我是否在最后一个循环中,但它不起作用.我究竟做错了什么?

Mar*_*off 7

为了避免这个问题,您似乎已经重写了str.join:

','.join(results_histogram)
Run Code Online (Sandbox Code Playgroud)

如果出现类似错误 TypeError: sequence item 0: expected string, int found,则可以将中间结果转换为字符串

','.join(map(str, results_histogram))
Run Code Online (Sandbox Code Playgroud)

str.join 毫无疑问,比在循环中连接多个字符串更有效,因为在Python中,字符串是不可变的,因此每个连接都会导致创建一个新字符串,然后必须在以后进行垃圾收集.


具体来说,您的示例是"不工作",因为您只想跳过添加逗号时完全跳过最后一个元素.这是一个明显而明显的小例子:

>>> x = [1,2,3]
>>> for i in range(len(x)):
...   if i != len(x) - 1:
...     print str(x[i]) + ',',
... 
1, 2,
Run Code Online (Sandbox Code Playgroud)

所以你可以把你的例子重写为

for i in range(len(results_histogram)):
    url += str(results_histogram[i])
    if i!=len(results_histogram)-1:
      url += ','
Run Code Online (Sandbox Code Playgroud)

但是你仍然应该坚持下去str.join.

  • 回答:因为results_hisogram是一个列表.map对该列表的元素执行函数. (2认同)