可靠性:Path/Cut Python 中的矢量技术
Reliability: Path/Cut Vector Technique in Python
我有一个列表,lst
,它只包含长度为 n 的 0 的 和 1 的 .
该列表表示来自可靠性分析的切割向量或路径向量,它们可能是也可能不是最小的 cut/path 向量本身。
列表中的元素表示单独的变量,例如 x1、x2 和 x3 和列表的长度 n 表示所表示的变量数。
例如列表[0, 1, 1]
表示3个变量,x1、x2、x3 .
给定输入 lst
,我想 return 一个被引导的 list 或 string按照以下规则。
规则:
如果xi = 1:
一个。 return (xi)
否则如果xi = 0:
b。 return: (1 - xi)
示例:
[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
目标:
最终目标是加入新列表中的项目 - 用 *
分隔 - 并将它们输入到 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)
我有一个列表,lst
,它只包含长度为 n 的 0 的 和 1 的 .
该列表表示来自可靠性分析的切割向量或路径向量,它们可能是也可能不是最小的 cut/path 向量本身。
列表中的元素表示单独的变量,例如 x1、x2 和 x3 和列表的长度 n 表示所表示的变量数。
例如列表[0, 1, 1]
表示3个变量,x1、x2、x3 .
给定输入 lst
,我想 return 一个被引导的 list 或 string按照以下规则。
规则:
如果xi = 1:
一个。 return (xi)
否则如果xi = 0:
b。 return: (1 - xi)
示例:
[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
目标:
最终目标是加入新列表中的项目 - 用 *
分隔 - 并将它们输入到 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)