[python] Printing an int list in a single line python3

I'm new to python and I'm trying to scan multiple numbers separated by spaces (let's assume '1 2 3' as an example) in a single line and add it to a list of int. I did it by using:

#gets the string 
string = input('Input numbers: ') 
#converts the string into an array of int, excluding the whitespaces
array = [int(s) for s in string.split()] 

Apparently it works, since when I type in '1 2 3' and do a print(array) the output is:

[1, 2, 3]

But I want to print it in a single line without the brackets, and with a space in between the numbers, like this:

1 2 3

I've tried doing:

for i in array:
    print(array[i], end=" ")

But I get an error:

2 3 Traceback (most recent call last):

print(array[i], end=" ")

IndexError: list index out of range

How can I print the list of ints (assuming my first two lines of code are right) in a single line, and without the brackets and commas?

This question is related to python python-3.x

The answer is


these will both work in Python 2.7 and Python 3.x:

>>> l = [1, 2, 3]
>>> print(' '.join(str(x) for x in l))
1 2 3
>>> print(' '.join(map(str, l)))
1 2 3

btw, array is a reserved word in Python.


# Print In One Line Python

print('Enter Value')

n = int(input())

print(*range(1, n+1), sep="")

you can use more elements "end" in print:

for iValue in arr:
   print(iValue, end = ", ");

Maybe this code will help you.

>>> def sort(lists):
...     lists.sort()
...     return lists
...
>>> datalist = [6,3,4,1,3,2,9]
>>> print(*sort(datalist), end=" ")
1 2 3 3 4 6 9

you can use an empty list variable to collect the user input, with method append(). and if you want to print list in one line you can use print(*list)


Yes that is possible in Python 3, just use * before the variable like:

print(*list)

This will print the list separated by spaces.

(where * is the unpacking operator that turns a list into positional arguments, print(*[1,2,3]) is the same as print(1,2,3), see also What does the star operator mean, in a function call?)


For python 2.7 another trick is:

arr = [1,2,3]
for num in arr:
  print num,
# will print 1 2 3

Try using join on a str conversion of your ints:

print(' '.join(str(x) for x in array))

For python 3.7


You have multiple options, each with different general use cases.

The first would be to use a for loop, as you described, but in the following way.

for value in array:
    print(value, end=' ')

You could also use str.join for a simple, readable one-liner using comprehension. This method would be good for storing this value to a variable.

print(' '.join(str(value) for value in array))

My favorite method, however, would be to pass array as *args, with a sep of ' '. Note, however, that this method will only produce a printed output, not a value that may be stored to a variable.

print(*array, sep=' ')

If you write

a = [1, 2, 3, 4, 5]
print(*a, sep = ',')

You get this output: 1,2,3,4,5