python - 如何从满足Python中某些条件的列表中获取所有对
问题描述
我正在尝试生成一个带有替换的有序(0.1, 0.1)
对列表(即需要和) (0.1, 0.2)
,(0.2, 0.1)
它们满足它们的总和<= max_sum
在 Python 中的条件。例如,给定max_sum=1
和列表:
[0, 0.1, 0.2, ..., 0.9, 1.0]
我想生成一个列表,其中包含:
[(0, 0), (0, 0.1), ..., (0, 0.9), (0, 1.0), (0.1, 0), (0.1, 0.1), ..., (0.1, 0.8), (0.1, 0.9), (0.2, 0), (0.2, 0.1), ...]
但不是 (0.1, 1.0)
等
这是一个可能效率低下且丑陋的解决方案,它存在一些问题,即 if 语句有时无法正确解析:
alphas = [0., .1, .2, .3, .4, .5, .6, .7, .8, .9, 1.]
max_sum = 1
def get_pairs(alphas, max_sum)
for a in alphas:
for b in alphas:
if a + b <= max_sum:
yield (a, b)
解决方案
如果订单很重要,这意味着您将拥有两者(0, 0.2)
,(0.2,0)
例如,那么您可以试试这个:
L = [round(x*0.1, 2) for x in range(0, 10)]
print([(x,y) for x in L for y in L if x + y <= 1])
输出 :
[(0.0, 0.0), (0.0, 0.1), (0.0, 0.2), ... (0.8, 0.2), (0.9, 0.0), (0.9, 0.1)]
推荐阅读
- postgresql - 将包含十六进制字符串的文本编码为 utf-8
- django - 如何在 Django 中使用 LDAP 登录
- docker - 问题:如何在带有卷的 ARM 架构上的 Docker 上运行 TimeScaleDB?
- sql-server - 复制/粘贴、删除选项在 SQL Management Studio 中不起作用
- java - 设计模式如何在使用 List 时避免 instanceOf
- java - 用户 URLClassLoader “动态”加载 jar 文件
- python - 使用Python从列的每一行中的字符串中切片子字符串
- asp.net - IdentityServer4 反向通道注销问题
- mongodb - 如何加密 spring-data-mongodb 中的数据库字段
- java - Java SWT 表列删除