我可以有条件地更改列表吗?

约瑟夫

这可能已经被回答了,但是我在搜索中找不到。

在Python 3中,我发现自己编写的代码看起来像这样:

def func():
    for item in list_A:
        if item == 'duck': list_B.append(0)
        elif item == 'goose': list_B.append(1)
        else: list_B.append(item)
    list_A = list_B

我的意图是有条件地更改list_A中的值。例如:

list_A = ['duck', 'duck', 'goose', 'duck', 'chicken']
func(list_A) -> [0, 0, 1, 0, 'chicken']

不过,理想情况下,我希望这样做而无需创建第二个列表。我想找到类似以下的伪代码:

list_A = [(if item == 'duck': 0, elif item == 'goose': 1, else: item) for item in list_A]

我的直觉是上面的方法不起作用,因为您无法在遍历列表时对列表进行变异(?),但是如果有人比我的原始方法要好,我将非常有兴趣了解它。谢谢!

user2357112支持Monica

迭代时替换列表中的元素很好。问题是结构修改-添加元素,删除元素或以其他方式导致元素移位的操作。

也就是说,创建第二个列表通常更容易正确,而且通常更快。

如果您仍然想使用变异方法,则可以采用以下一种方法:

for i, item in enumerate(l):
     if item == 'duck':
         l[i] = 0
     elif item == 'goose':
         l[i] = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以有条件地替换列表中的值吗?

我可以有条件地向我的knex查询添加where()子句吗?

argparse可以有条件地解析参数吗?

我可以在ARM模板中有条件地使用复制功能吗?

我可以根据所在的存储库有条件地激活Git提示吗?

我可以有条件地提供特征函数的默认实现吗?

我可以有条件地选择要分配给哪个变量吗?

我可以有条件地使用passport-jwt吗?

我可以有条件地编译“ Select Case”吗?

在Pentaho Data Integration中,我可以有条件地输出吗?

我可以有条件地关闭某些 oh-my-zsh 插件吗?

我可以有条件地定义一个 openMP 并行区域吗?

我可以有条件地接管vscode扩展中的键绑定吗?

我可以通过可移植的方式有条件地在Makefile中定义宏吗?

我们可以有条件地调用 pytest 夹具吗?

我可以有条件地在开关上实现/放置数组吗?

我可以有条件的舍邦吗?

我可以使用计算属性来有条件地对表格行进行样式设置吗?

我可以使用C预处理器有条件地检查宏的值吗?

我可以在AWS Appsync解析器中有条件地调用lambda函数吗?

我可以有条件地将语句打印到外部SAS程序文件吗?

我可以使用IF语句的CASE来有条件地运行其他SELECT语句吗?

我可以在应用程序的make文件中有条件地构建PC文件(Oracle Pro * c)吗?

如何在列表项中有条件地更改rightIcon。我正在使用本机元素

有什么方法可以有条件地忽略Spring的JUnit的测试吗?

有什么可以防止std :: optional :: value_or()有条件地例外的吗?

环形防伪中间件可以有条件地应用吗?

组件可以删除自己的模板并有条件地放回去吗?

您可以有条件地使 Hive 脚本失败吗?