Ajay H Ajay H - 3 years ago 222
Python Question

python - Convert Single integer into a list

Say I have the following lists:

a = 1
b = [2,3]
c = [4,5,6]


I want to concatenate them such that I get the following:

[1,2,3,4,5,6]


I tried the usual
+
operator:

>>> a+b+c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'


This is because of the
a
term. It is just an integer. So I convert everything to a list:

>>> [a]+[b]+[c]
[1, [2, 3], [4, 5, 6]]


Not quite what I'm looking for.

I also tried all the options in this answer, but I get the same
int
error mentioned above.

>>> l = [a]+[b]+[c]
>>> flat_list = [item for sublist in l for item in sublist]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
TypeError: 'int' object is not iterable


It should be simple enough, but nothing works with that term
a
. Is there any way to do this efficiently? It doens't necessarily have to be pythonic.

Answer Source

There's nothing that will automatically treat an int as if it's a list of one int. You need to check whether the value is a list or not:

(a if type(a) is list else [a]) + (b if type(b) is list else [b]) + (c if type(c) is list else [c])

If you have to do this often you might want to write a function:

def as_list(x):
    if type(x) is list:
        return x
    else:
        return [x]

Then you can write:

as_list(a) + as_list(b) + as_list(c)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download