Printing an int list in a single line python3

Question:

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?

Asked By: KimioN42

||

Answers:

You want to say

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

The syntax i in array iterates over each member of the list. So, array[i] was trying to access array[1], array[2], and array[3], but the last of these is out of bounds (array has indices 0, 1, and 2).

You can get the same effect with print(" ".join(map(str,array))).

Answered By: Nick Matteo

Try using join on a str conversion of your ints:

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

For python 3.7

Answered By: EoinS

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.

Answered By: Corey Goldberg

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=' ')
Answered By: 2Cubed

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?)

Answered By: Nikhil Gupta

For python 2.7 another trick is:

arr = [1,2,3]
for num in arr:
  print num,
# will print 1 2 3
Answered By: elad silver
# Print In One Line Python

print('Enter Value')

n = int(input())

print(*range(1, n+1), sep="")
Answered By: Somesh Samadder

If you write

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

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

Answered By: mehboob shaikh

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)

Answered By: monti

you can use more elements "end" in print:

for iValue in arr:
   print(iValue, end = ", ");
Answered By: ManhKM
lstofGroups=[1,2,3,4,5,6,7,8,9,10]

print(*lstofGroups, sep = ',')

don’t forget to put * before the List

Answered By: Waleed A. Elgalil
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.