python - 可靠性:Python 中的路径/剪切向量技术
问题描述
我有一个列表,lst
它只包含长度为n的0和1。
该列表表示来自可靠性分析的切割向量或路径向量,它们本身可能是也可能不是最小切割/路径向量。
列表中的元素表示单独的变量,例如x1、x2和x3,列表的长度n表示所表示的变量的数量。
例如,该列表[0, 1, 1]
表示 3 个变量x1、x2和x3。
给定输入,lst
我想返回一个由以下规则引导的列表或字符串。
规则:
如果x i = 1:
一个。返回(x i )
否则,如果x i = 0:
湾。返回:(1 - x i )
例子:
[0, 1] => [1-X1, X2]
或者"1-X1, X2"
[1, 0] => [X1, 1-X2]
或者"X1, 1-X2"
[0, 1, 1] => [1-X1, X2, X3]
或者"1-X1, X2, X3"
[1, 1, 1] => [X1, X2, X3]
或者"X1, X2, X3"
我的代码:
def get_function(path_vector):
lst = []
for item in path_vector:
if "0" in item:
print("1-", item, sep="")
lst.extend(["1-", item])
else:
print(item)
lst.append(item)
print(lst)
expr = "*".join(lst)
return expr
目标:
最终目标是加入新列表中的项目 - 由 a 分隔*
- 并将它们输入到sympy库中的函数中。
任何提示表示赞赏。
解决方案
item
有值0
,或者1
但您需要它在列表中的位置来创建字符串1-X{position}
或X{position}
您可以使用enumarate(..., 1)
它来获取其在列表中的位置。
因为你有整数值,所以你应该比较整数if item == 0:
使用列表examples
生成字符串并与预期结果进行比较的最小工作代码
def get_function(path_vector):
lst = []
for position, item in enumerate(path_vector, 1):
if item == 0:
text = f"1-X{position}"
else:
text = f"X{position}"
lst.append(text)
print('text:', text)
print('lst:', lst)
expr = "*".join(lst)
return expr
# --- main ---
examples = [
([0, 1], "1-X1*X2"),
([1, 0], "X1*1-X2"),
([0, 1, 1], "1-X1*X2*X3"),
([1, 1, 1], "X1*X2*X3"),
]
for data, expected_result in examples:
result = get_function(data)
print(data, expected_result, result, expected_result==result)
推荐阅读
- amazon-web-services - 缓存控制元数据不适用于 aws s3 中的文件
- php - 没有 Laravel Passport 的 Laravel API 返回 401(未授权)
- php - 在 Google Indexing API 上收到 403 错误
- spring-boot - 如何在 Spring Boot 中使用非 root 保险库令牌进行保险库登录
- javascript - 数组映射和过滤 ReactJs
- c# - 如何在 ASP.NET 中的特定时间运行代码
- javascript - 为什么不能使用 let 声明一个与一个函数参数同名的变量,即使参数 get 设置默认值?
- google-bigquery - 基于字段位置而非名称的 BigQuery 联合架构
- linux - 如何通过shell脚本在没有密码的情况下通过su切换服务器中的用户?
- elasticsearch - 将新字段添加到现有嵌套