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
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 print
ed 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
Source: Stackoverflow.com