Python Forum
Add items from one list to list of lists
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Add items from one list to list of lists
#1
Hello,

I would like to add every element of a list on every list from a list of lists. Ie :
H = [[1,2],[3,4]]
I = [5,6]
With this result :
Output:
J = [[1,2,5], [3,4,5], [1,2,6], [3,4,6]]
I don’t find the good logic.

Ie :
j = []
for x in h :
	for y in i :
		j.append(h+i)
		print (j)
Gives me :

Output:
[[[1, 2], [3, 4], 5, 6]] [[[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6]] [[[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6]] [[[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6], [[1, 2], [3, 4], 5, 6]]
Or again :

k = []
for w in h :
	for z in i :
		o = [w,z]
		k.append(o)
		print (k)
Will give :

Output:
[[[1, 2], 5]] [[[1, 2], 5], [[1, 2], 6]] [[[1, 2], 5], [[1, 2], 6], [[3, 4], 5]] [[[1, 2], 5], [[1, 2], 6], [[3, 4], 5], [[3, 4], 6]]
I’ve tried some tests with map, but nothing conclusive.

Can you help me please to solve my problem ?
Reply
#2
My subjective opinion is that 'not finding good logic' starts with bad naming habits. What are H and I? The last name ('I') I would call 'crime against readers of your code', PEP8 Names to avoid:

Quote:Never use the characters 'l' (lowercase letter el), 'O' (uppercase letter oh), or 'I' (uppercase letter eye) as single character variable names.

In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use 'l', use 'L' instead.

I add that 'l' and 'I' are also pretty similar to each other.

Now to problem at hand: list comprehension could be suitable tool:

>>> target = [[1,2],[3,4]]
>>> source = [5,6]
>>> [[*item, num] for num in source for item in target]
[[1, 2, 5], [3, 4, 5], [1, 2, 6], [3, 4, 6]]
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#3
Hello,

At first, thank you for the edit from the moderator, I had not found how to present it, now I know. Thanks again.

For the letters, thank you. I'm a beginner, I knew that but as it was just an example I've believed it was ok. Sorry, I've noticed and I'll don't do that again.

Now, about the solution, I thank you. Can you give me an explanation with it please ? I search to understand everything.

For what I see, you've added a star in front of item ; is that the way to do what I want ? Have you a link where it's teaching and can you write the long version to help my comprehension ?

On Internet, I can't find an explanation (I've read all the tutorial section on Python documentation, maybe I've jumped something). Item isn't a method which gives a dictionnary ?

Here item is just a word (I've tried your code changing item to be sure), but it a function too no ?

Sorry for my lack of knowledge.
Reply
#4
(Mar-28-2020, 08:34 AM)PUP280 Wrote: Can you give me an explanation with it please ?

This is nested list comprehension combined with iterable unpacking.

Documentation > The Python Tutorial > Data Structures > 5. More on Lists > 5.1.3. List Comprehensions

Documentation > The Python Language Reference > 6. Expressions > 6.15. Expression Lists

PEP448 - Additional Unpacking Generalizations
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#5
(Mar-24-2020, 10:50 AM)PUP280 Wrote: Or again :

k = []
for w in h :
	for z in i :
		o = [w,z]
		k.append(o)
		print (k)
Will give :

Output:
[[[1, 2], 5]] [[[1, 2], 5], [[1, 2], 6]] [[[1, 2], 5], [[1, 2], 6], [[3, 4], 5]] [[[1, 2], 5], [[1, 2], 6], [[3, 4], 5], [[3, 4], 6]]
I’ve tried some tests with map, but nothing conclusive.

Can you help me please to solve my problem ?
Had you realized, the code is actually right just that the print statement is in the wrong place. It should be :
H = [[1,2],[3,4]]
I = [5,6]
k = []
for w in H :
    for z in I :
        o = [w,z]
        k.append(o)
print (k)
And it gives output:
Output:
[[[1, 2], 5], [[1, 2], 6], [[3, 4], 5], [[3, 4], 6]]
pyzyx3qwerty
"The greatest glory in living lies not in never falling, but in rising every time we fall." - Nelson Mandela
Need help on the forum? Visit help @ python forum
For learning more and more about python, visit Python docs
Reply
#6
Thank you perfringo :)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to parse and group hierarchical list items from an unindented string in Python? ann23fr 0 71 Yesterday, 01:16 PM
Last Post: ann23fr
  No matter what I do I get back "List indices must be integers or slices, not list" Radical 4 1,091 Sep-24-2023, 05:03 AM
Last Post: deanhystad
  Why do I have to repeat items in list slices in order to make this work? Pythonica 7 1,256 May-22-2023, 10:39 PM
Last Post: ICanIBB
  Delete strings from a list to create a new only number list Dvdscot 8 1,466 May-01-2023, 09:06 PM
Last Post: deanhystad
  List all possibilities of a nested-list by flattened lists sparkt 1 878 Feb-23-2023, 02:21 PM
Last Post: sparkt
  Finding combinations of list of items (30 or so) LynnS 1 836 Jan-25-2023, 02:57 PM
Last Post: deanhystad
  user input values into list of lists tauros73 3 1,023 Dec-29-2022, 05:54 PM
Last Post: deanhystad
  returning a List of Lists nafshar 3 1,014 Oct-28-2022, 06:28 PM
Last Post: deanhystad
  Сheck if an element from a list is in another list that contains a namedtuple elnk 8 1,713 Oct-26-2022, 04:03 PM
Last Post: deanhystad
  Creating list of lists, with objects from lists sgrinderud 7 1,561 Oct-01-2022, 07:15 PM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020