Python 列表理解问题

问题描述 投票:0回答:1

我尝试在 Python 中使用列表理解来根据现有列表的元素创建一个新列表,但遇到了问题。这是我的代码: 原始列表 = [1, 2, 3, 4, 5] new_list = [x if x % 2 == 0 else x*2 对于original_list中的x] 打印(新列表)

当然,这是一个 Stack Overflow 问题的示例:

标题:Python 列表理解的问题

问题:

我尝试在 Python 中使用列表理解来根据现有列表的元素创建一个新列表,但遇到了问题。这是我的代码:

蟒蛇 复制代码 原始列表 = [1, 2, 3, 4, 5] new_list = [x if x % 2 == 0 else x*2 对于original_list中的x] 打印(新列表) 我期望输出为 [2, 4, 6, 4, 10],但我得到的是 [1, 4, 3, 4, 5]。条件表达式似乎没有按我的预期工作。我做错了什么?

附加信息:

Python版本:3.8.1 操作系统:Windows 10

python debugging conditional-statements list-comprehension
1个回答
0
投票

我相信你应该得到

[2, 2, 6, 4, 10]
。这里的第二个元素(索引 1)是唯一与您预期不同的元素。由于 2 是偶数,列表推导式将添加
x
而不是
x*2

但是,如果您得到

[1, 4, 3, 4, 5]
那么还有另一个问题。列表理解本身很好。如果您在 Jupiter 笔记本中运行此程序,则
original_list
中的数据可能与您预期的不同(对 Jupiter 笔记本中的变量所做的任何更改都会在整个运行时持续存在)。

© www.soinside.com 2019 - 2024. All rights reserved.