嵌套列表推导式用于展开嵌套列表

3
我很新于Python,想知道如何使用列表解析来平铺下面的嵌套列表,并使用条件逻辑。
nested_list = [[1,2,3], [4,5,6], [7,8,9]]
以下语句返回一个嵌套列表,但是当我尝试通过删除内部方括号来展开列表时,会出现错误。
odds_evens = [['odd' if n % 2 != 0 else 'even' for n in l] for l in nested_list]
4个回答

6

您的语法有些错误。请尝试以下代码片段。

nested_list = [[1,2,3], [4,5,6], [7,8,9]]
odds_evens = ['odd' if n % 2 != 0 else 'even' for l in nested_list for n in l]
print(odds_evens)

输出:

['odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']

嵌套列表推导


0

根据条件从嵌套列表中读取数据并输出到平面列表

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

flat_list = [item for sublist in nested_list for item in sublist]
# >>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

flat_list_even = [item for sublist in nested_list for item in sublist if item % 2 == 0]
# >>> [2, 4, 6, 8]


flat_list_odd = [item for sublist in nested_list for item in sublist if item % 2 != 0]
# >>> [1, 3, 5, 7, 9]

flat_list_literal = ["even" if item % 2 == 0 else "odd" for sublist in nested_list for item in sublist]
# >>> ['odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']

0

这里有什么问题?

>>> nested_list = [[1,2,3], [4,5,6], [7,8,9]]
>>> odds_evens = ['odd' if n % 2 != 0 else 'even' for 1 in nested_list for n in 1]
  File "<stdin>", line 1
SyntaxError: can't assign to literal

-1
要创建一个平坦列表,您需要在推导代码中有一组括号。尝试下面的代码:
odds_evens = ['odd' if n%2!=0 else 'even' for l in nested_list for n in l]
输出:
['odd', 'odd', 'odd', 'even', 'even', 'even', 'odd', 'odd', 'odd']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接