所以我试图用循环来操作列表。通过将列表更改为偶数或奇数,将我的列表更改为每个整数的字符串。
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
感谢任何帮助。
答案 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]