1

I wanted to produce lst_new such that,

items = (.1, .5, .9)
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

lst_new == [[[.1, 2, 3], [.4, 5, 6], [.7, 8, 9]], [[.5, 2, 3], [2, 5, 6], [3.5, 8, 9]], [[.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]]

Using list comprehension,

lst_new = [x[0] * i for i in items for x in lst]

But obviously it doesn't work as intended. Help?

1

1 Answer 1

3

Your problem is that you're only including the first value of x, not all of them, and you need a nested list comprehension to add depth to the list structure:

lst_new = [[[x[0] * m] + x[1:] for x in lst] for m in items]

Output

[
 [[0.1, 2, 3], [0.4, 5, 6], [0.7, 8, 9]],
 [[0.5, 2, 3], [2.0, 5, 6], [3.5, 8, 9]],
 [[0.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]
]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.