Чтобы немного избежать вопроса, вы, кажется, переписали str.join
:
','.join(results_histogram)
Если вы получите сообщение об ошибке типа TypeError: sequence item 0: expected string, int found
, то вы можете преобразовать промежуточные результаты в строку с
','.join(map(str, results_histogram))
str.join
, несомненно, более эффективен, чем конкатенация нескольких строк в цикле, потому что в Python строки являются неизменяемыми, поэтому каждая конкатенация приводит к созданию новой строки, которую затем приходится собирать мусором позже.
В частности, , ваш пример «не работает», потому что вы пропускаете последний элемент полностью, когда хотите пропустить добавление запятой. Это ясно и очевидно на небольшом примере:
>>> x = [1,2,3]
>>> for i in range(len(x)):
... if i != len(x) - 1:
... print str(x[i]) + ',',
...
1, 2,
Чтобы вы могли переписать свой пример как
for i in range(len(results_histogram)):
url += str(results_histogram[i])
if i!=len(results_histogram)-1:
url += ','
Но вы все равно должны придерживаться str.join
.