Python Forum

Full Version: How to change odd to even numbers in the list?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Newbie here. Struggling with this simple problem.

x2=[[2,4,6],[1,3,5],[7,8,9]]

Want to change to

x2=[[2,4,6],[2,4,6],[8,8,10]]

A. Change odd numbers to the next available even numbers, i.e., 1 to 1+1, 3 to 3+1 etc.

B. x2[0] will give me the 1st list. How can I get the individual numbers in that list?

Thanks.
Use a for loop/compression?
(Aug-08-2021, 05:38 AM)ndc85430 Wrote: [ -> ]Use a for loop/compression?
Thanks.

Appreciate more infor.

My plan is to look at each number in the lists and then do the odd to even number correction. But cannot extract the individual numbers, but the whole lists.
Are you not allowed to look at the individual values in the list? If not, why not?

If you are, then do you know how to use a for loop or comprehension? If not, look those things up.
Hi @plumberpy,
Please read the tutorial of lists. The last example of this chapter 3.1.3 answers your question.
(Aug-08-2021, 07:31 AM)ibreeden Wrote: [ -> ]Hi @plumberpy,
Please read the tutorial of lists. The last example of this chapter 3.1.3 answers your question.

Noted and thanks.

The trick is to use x[ ] [ ] to get the required data for a list within a list. Did not know that. Too used to x( , ) format. Maybe future Python upgrade can simplify the syntax to x[ , ]. Ha.

I will play around with x[ ] [ ] to solve my problem.

Many thanks.
(Aug-08-2021, 06:25 AM)ndc85430 Wrote: [ -> ]Are you not allowed to look at the individual values in the list? If not, why not?

If you are, then do you know how to use a for loop or comprehension? If not, look those things up.

Thanks.

Tried out a comprehension example. It works for strings but I cannot get it to do what I want with the numbers in the second layer in a list.

Cheerio.
here is one way

#! /usr/bin/env python3

x = [[2, 4, 6], [1, 3, 5], [7, 8, 9]]

for inner_list in x:
    for num in range(0, len(inner_list)):
        if inner_list[num] % 2 != 0:
            inner_list[num] = inner_list[num] + 1
print(x)
Output:
[[2, 4, 6], [2, 4, 6], [8, 8, 10]]
(Aug-08-2021, 10:40 AM)menator01 Wrote: [ -> ]here is one way

#! /usr/bin/env python3

x = [[2, 4, 6], [1, 3, 5], [7, 8, 9]]

for inner_list in x:
    for num in range(0, len(inner_list)):
        if inner_list[num] % 2 != 0:
            inner_list[num] = inner_list[num] + 1
print(x)
Output:
[[2, 4, 6], [2, 4, 6], [8, 8, 10]]
Many many thanks!

Yours is a lot simpler than what I have in mind.

Cheerio.