我尝试在 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
我相信你应该得到
[2, 2, 6, 4, 10]
。这里的第二个元素(索引 1)是唯一与您预期不同的元素。由于 2 是偶数,列表推导式将添加 x
而不是 x*2
。
但是,如果您得到
[1, 4, 3, 4, 5]
那么还有另一个问题。列表理解本身很好。如果您在 Jupiter 笔记本中运行此程序,则 original_list
中的数据可能与您预期的不同(对 Jupiter 笔记本中的变量所做的任何更改都会在整个运行时持续存在)。