I'm writing a function to append an input to a list. I want it so that when you input 280 2
the list becomes ['280', '280']
instead of ['280 2']
.
Asked
Active
Viewed 623 times
5

Carl Groth
- 97
- 1
- 7
4 Answers
8
>>> number, factor = input().split()
280 2
>>> [number]*int(factor)
['280', '280']
Remember that concatenating a list with itself with the * operator can have unexpected results if your list contains mutable elements - but in your case it's fine.
edit:
Solution that can handle inputs without a factor:
>>> def multiply_input():
... *head, tail = input().split()
... return head*int(tail) if head else [tail]
...
>>> multiply_input()
280 3
['280', '280', '280']
>>> multiply_input()
280
['280']
Add error checking as needed (for example for empty inputs) depending on your use case.
-
I like it, but it appears it runs into an error when you only enter 280, I could use ugly code like I usually do to fix this but do you know of any sleek solution? – Carl Groth Apr 16 '16 at 11:46
2
from itertools import repeat
mes=input("please write your number and repetitions:").split()
listt= []
listt.extend(repeat(int(mes[0]), int(mes[1]))
#repeat(object [,times]) -> create an iterator which returns the object
#for the specified number of times. If not specified, returns the object
#endlessly.

Taylan
- 736
- 1
- 5
- 14
-
Please consider explaining the rationale behind your code to make it easier for those who are trying to learn from it. – Reti43 Apr 16 '16 at 19:59
-
1Thank you! I was going insane trying to .append my inputs when I (unbeknownst to me) actually wanted to .extend them. – Carl Groth Apr 17 '16 at 11:20
2
You can handle the case with unspecified number of repetitions by extending the parsed input with a list containing 1. You can then slice the list to leave the first 2 items (in case the number of repetitions was provided, that [1]
will be discarded)
number, rep = (input().split() + [1])[:2]
[number] * int(rep)

Eli Korvigo
- 10,265
- 6
- 47
- 73
-
A bit of text would help the reader understand quicker your solution. – Laur Ivan Apr 16 '16 at 14:22
0
This code provides exception handling against no second number being provided with in put.
def addtolist():
number = input("Enter number: ")
try:
factor = input("Enter factor: ")
except SyntaxError:
factor = 1
for i in range(factor):
listname.append(number)

Jonathan
- 86
- 7