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

时间:2015-05-14 20:29:34

标签: python list python-3.x nested-lists

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

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

我想输出的是

Input_List = [['odd','even','odd'],['even','odd','even'],['odd','even','odd']]

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

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

感谢任何帮助。

4 个答案:

答案 0 :(得分: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']]

答案 1 :(得分: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

在这里,我使用enumerate代替,这是因为您可以使用索引来引用列表中的元素。

您可以使用map和列表理解

轻松完成
>>> 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']]

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

另一种方法是在嵌套列表comp中使用逻辑和运算符(&),例如comments中的Padraic提及

>>> [['odd' if i & 1 else 'even' for i in sub] for sub in l]
[['odd', 'even', 'odd'], ['even', 'odd', 'even'], ['odd', 'even', 'odd']]

答案 2 :(得分:3)

不知道为什么没有人做过o̶b̶v̶i̶o̶u̶s̶:

[[['Even','Odd'][n%2] for n in i] for i in Input_List]

编辑:我被告知我拼错了“混淆”(虽然我不同意: - )

答案 3 :(得分:2)

input_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print [['odd' if i%2 else 'even' for i in sublist]
       for sublist in input_list]