微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果满足条件,则列表理解以更新值

如何解决如果满足条件,则列表理解以更新值

我有以下列表和变量 i:

probs = [1/9,1/9,1/9]
i = 3

我想将变量 i 中给出的索引的列表中的值更改为 3/9,并将其余值更改为 8/9。 因此,上述条件的预期结果是:

probs = [8/9,8/9,3/9,8/9]

我更喜欢使用列表理解来提高效率,有什么想法吗?

解决方法

您可以使用列表推导式中的表达式来执行此操作。

probs = [3 / 9 if i == index else 8 / 9 for index,_ in enumerate(probs)]
,

这是一个满足您要求的列表推导式:

probs = ["1/9","1/9","1/9"]
i = 3

probs = ["3/9" if idx == i else "8/9" for idx in range(len(probs))]
print(probs)
# Prints ['8/9','8/9','3/9','8/9']

请注意,我将分数转换为字符串,否则它们将被打印为浮点数。如果你想让它们成为浮点数,你可以这样做:

probs = [1/9,1/9,1/9]
i = 3

probs = [3/9 if idx == i else 8/9 for idx in range(len(probs))]
print(probs)
# Prints [0.8888888888888888,0.8888888888888888,0.3333333333333333,0.8888888888888888]

另外,请注意,这个列表理解实际上并不比普通的 for 循环快。

,

我建议使用 Python 的 fractions 模块进行概率计算。

因此您的解决方案可能是:

from fractions import Fraction
probs = ["1/9","1/9"]
# rather than integer convert it to Fraction,or simply use fractions only from beginning.
probs = [Fraction(i) for i in probs]  # convert like this
# or use directly as below:
probs = [Fraction(1,9),Fraction(1,9)]

我相信在概率上你必须进行数学运算,所以你可以这样做:

In [12]: print(probs)
[Fraction(1,9)]

In [13]: i = 3

In [15]: new_probs = [Fraction(3,9) if prob==i else Fraction(8,9) for prob in probs]

In [16]: print(new_probs)
[Fraction(8,Fraction(8,9)]

或者假设您实际上正在执行 1 - Probability 的运算并乘以 3 以匹配,那么它仍然可以使用分数运算,正如您期望使用概率函数执行的那样:

In [17]: new_probs = [3*prob if prob==i else 1-prob for prob in probs]

In [18]: print(new_probs)
[Fraction(8,Fraction(2,3),9)]
,

使用 enumerate()

new_probs = ['3/9' if i == indx else '8/9' for indx,val in enumerate(probs)]
print(new_probs)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?