I have a bunch of lists I want to append to a single list that is sort of the "main" list in a program I'm trying to write. Is there a way to do this in one line of code rather than like 10? I'm a beginner so I have no idea...
For a better picture of my question, what if I had these lists:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
And want to append y and z to x. Instead of doing:
x.append(y)
x.append(z)
Is there a way to do this in one line of code? I already tried:
x.append(y, z)
And it wont work.
If you prefer a slightly more functional approach, you could try:
This will enable you to concatenate any number of lists onto list
x
.If you would just like to concatenate any number of lists together (i.e. not onto some base list), you can simplify to:
Take note that our BFDL has his reservations with regard to lambdas, reduce, and friends: https://www.artima.com/weblogs/viewpost.jsp?thread=98196
To complete this answer, you can read more about reduce in the documentation: https://docs.python.org/3/library/functools.html#functools.reduce
I quote: "Apply function of two arguments cumulatively to the items of sequence, from left to right, so as to reduce the sequence to a single value."
P.S. Using
sum()
as described in https://stackoverflow.com/a/41752487/532513 is super compact, it does seem to work with lists, and is really fast (see https://stackoverflow.com/a/33277438/532513 ) buthelp(sum)
in Python 3.6 has the following to say:Although this is slightly worrying, I will probably keep it as my first option for concatenating lists.
In one line , it can be done in following ways
or
To exactly replicate the effect of append, try the following function, simple and effective:
Extending my comment
You can use
sum
function with start value (empty list) indicated:This is especially more suitable if you want to append an arbitrary number of lists.
should do what you want
or
or even