将奇数/偶数映射到嵌套列表

Noo*_*mer 1 python list nested-lists python-3.x

所以我试图用循环来操作列表.通过将列表更改为偶数或奇数,将我的列表更改为每个整数的字符串.

Input_List = [[1,2,3], [4,5,6], [7,8,9]]
Run Code Online (Sandbox Code Playgroud)

我想输出的是

Input_List = [['odd','even','odd'],['even','odd','even'],['odd','even','odd']]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止编写的代码:

for element in Input_List:
    for item in element:
        if item %2==0:
        Input_List[element][x]="Even"
    else:
        Input_List[element][x]="Odd"
        x+=1
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Kas*_*mvd 8

您可以使用嵌套列表解析:

>>> [['Even' if j%2==0 else 'Odd' for j in i] for i in Input_List]
[['Odd', 'Even', 'Odd'], ['Even', 'Odd', 'Even'], ['Odd', 'Even', 'Odd']]
Run Code Online (Sandbox Code Playgroud)


Bha*_*Rao 7

你很近,你的计划所需的最小变化是

Input_List=[[1,2,3],[4,5,6],[7,8,9]]
for i,element in enumerate(Input_List):
    for j,item in enumerate(element):
        if item %2==0:
            Input_List[i][j]="Even"
        else:
            Input_List[i][j]="Odd"
print Input_List
Run Code Online (Sandbox Code Playgroud)

在这里,我正在使用enumerate,这是因为你可以通过使用它们的索引来引用列表中的元素.

您可以使用a map和list comprehension 轻松完成

>>> l=[[1,2,3],[4,5,6],[7,8,9]]
>>> [list(map(lambda x: 'Odd' if x%2 != 0 else 'Even',i)) for i in l]
[['Odd', 'Even', 'Odd'], ['Even', 'Odd', 'Even'], ['Odd', 'Even', 'Odd']]
Run Code Online (Sandbox Code Playgroud)

小注 - 您的列表缺少逗号,[[1,2,3][4,5,6][7,8,9]]必须是[[1,2,3],[4,5,6],[7,8,9]]

另一种方法是&在嵌套列表comp中使用logical和operator ,就像注释中的 Padraic一样

>>> [['odd' if i & 1 else 'even' for i in sub] for sub in l]
[['odd', 'even', 'odd'], ['even', 'odd', 'even'], ['odd', 'even', 'odd']]
Run Code Online (Sandbox Code Playgroud)