python:我如何知道我何时处于最后一个for周期

python:我如何知道我何时处于最后一个for周期,python,syntax,Python,Syntax,if语句正在检查我是否在最后一个循环中,但它不起作用。我做错了什么?为了稍微避免这个问题,你似乎重写了: 如果出现类似TypeError:sequence item 0:expected string,int found的错误,则可以使用 ','.join(results_histogram) str.join无疑比在循环中串联多个字符串更有效,因为在Python中,字符串是不可变的,因此每次串联都会创建一个新字符串,之后必须对其进行垃圾收集 具体来说,您的示例“不起作用”,因为您完全跳过

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

为了稍微避免这个问题,你似乎重写了:

如果出现类似
TypeError:sequence item 0:expected string,int found
的错误,则可以使用

','.join(results_histogram)

str.join
无疑比在循环中串联多个字符串更有效,因为在Python中,字符串是不可变的,因此每次串联都会创建一个新字符串,之后必须对其进行垃圾收集


具体来说,您的示例“不起作用”,因为您完全跳过了最后一个元素,而您只想跳过添加逗号。通过一个小例子,这是显而易见的:

','.join(map(str, results_histogram))
所以你可以把你的例子改写成

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

但是你仍然应该坚持使用
str.join

马克当然适合你的例子,但有时在没有如此优雅的替代品的情况下会出现这种情况。然后你可以做一些类似的事情:

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

通常不需要使用变量在列表中递增。切片将返回除最后一个元素之外的所有内容

此示例遵循您的语法:

if len(results_histogram):
    url += str(results_histogram[0])
    for i in range(len(results_histogram))[1:]:
        url += ',' + str(results_histogram[i])
或者,您可以使用生成器表达式完成整个过程:

for el in results_histogram[:-1]:
    url += str(el) + ','

我同意@Mark Rushakoff的观点,使用join将是最好的。我只是想对此发表评论,但我没有足够的代表这么做=(

无论如何,还可以查看内置的enumerate()函数

使用enumerate编写解决方案的一种方法是:

','.join(str(el) for el in results_histogram[:-1])

假设url是在以前的某个地方声明的。同样,在您的情况下使用join会更好。这只是向您展示了在将来的情况下,除了字符串连接之外,您可能还想做一些事情的枚举。

为什么我不能按我现在的方式来做呢>??@i\uuuuuu:因为它不必要地复杂。@i\uuuuuuuuu:您可以做吗他是你目前的样子,但你不应该。当有更即时可读和调试的代码已经解决了你的问题时,不要重新实现代码。问题:为什么你必须包含MAP为什么你不能这样做;','。join(str(results\u histogram))答:因为结果图是一个列表。map对该列表的元素执行一个函数。这是完整的语句吗?别生气,你也在阅读文档吗?重要的是你要学会自己找到答案。也许你应该在使用Python之前阅读文档…@Felix,这太荒谬了。小心点人们以不同的方式学习,而实验通常是一种很好的学习方式,在使用Python之前,没有人阅读所有Python文档或其他任何东西。不要傲慢。谢谢kenan,我真的从提问中学到了很多,我非常感谢大家的帮助input@Triptych当前位置我的措辞很糟糕。当然有人会这样做es不必阅读所有文档。但根据OP之前的问题,他似乎甚至没有阅读一些解释列表的基本教程。大多数问题都可以通过查看文档来回答。当然,这些问题在这里仍然是有效的问题,但OP提出的问题的比率是新的问题让我思考。如果我!=len(结果直方图)-1:?+1用于使用
enumerate
。Python标准库中最被低估的函数之一,IMHO。最重要的是,即使
len()
不可用,它也能工作(例如,如果您处理的是一个生成函数,该函数惰性地计算序列)。
for i, res in enumerate(results_histogram):
    url+=res
    if i != len(results_histogram)-1:
       url+=','
for i, res in enumerate(results_histogram):
    url+=res
    if i != len(results_histogram)-1:
       url+=','
ouput = "("
for telem in text[:-1]:
    output += "%s, " % telem 
output += "%s)\n" % text[-1:]