Print a list of space-separated elements
You can apply the list as separate arguments:
print(*L)
and let print()
take care of converting each element to a string. You can, as always, control the separator by setting the sep
keyword argument:
>>> L = [1, 2, 3, 4, 5]>>> print(*L)1 2 3 4 5>>> print(*L, sep=', ')1, 2, 3, 4, 5>>> print(*L, sep=' -> ')1 -> 2 -> 3 -> 4 -> 5
Unless you need the joined string for something else, this is the easiest method. Otherwise, use str.join()
:
joined_string = ' '.join([str(v) for v in L])print(joined_string)# do other things with joined_string
Note that this requires manual conversion to strings for any non-string values in L
!
Although the accepted answer is absolutely clear, I just wanted to check efficiency in terms of time.
The best way is to print joined string of numbers converted to strings.
print(" ".join(list(map(str,l))))
Note that I used map instead of loop.I wrote a little code of all 4 different ways to compare time:
import time as ta, b = 10, 210000l = list(range(a, b))tic = t.time()for i in l: print(i, end=" ")print()tac = t.time()t1 = (tac - tic) * 1000print(*l)toe = t.time()t2 = (toe - tac) * 1000print(" ".join([str(i) for i in l]))joe = t.time()t3 = (joe - toe) * 1000print(" ".join(list(map(str, l))))toy = t.time()t4 = (toy - joe) * 1000print("Time",t1,t2,t3,t4)
Result:
Time 74344.76 71790.83 196.99 153.99
The output was quite surprising to me. Huge difference of time in cases of 'loop method' and 'joined-string method'.
Conclusion: Do not use loops for printing list if size is too large( in order of 10**5 or more).
list = [1, 2, 3, 4, 5]for i in list[0:-1]: print(i, end=', ')print(list[-1])
do for loops really take that much longer to run?
was trying to make something that printed all str values in a list separated by commas, inserting "and" before the last entry and came up with this:
spam = ['apples', 'bananas', 'tofu', 'cats']for i in spam[0:-1]: print(i, end=', ')print('and ' + spam[-1])