将列表从 Python 发送到 Prolog PySwip

Send list from Python to Prolog PySwip

我正在 Python 和 Prolog 上使用库 PySwip 编写程序。我需要将列表从 Python 发送到 Prolog。我是这样做的:

from pyswip import Prolog
p = Prolog()
p.assertz("fruits([apple,banana,orange])")  # Create list
p.assertz("result(X) :- fruits(L), member(X, L)")  # Rule for checking if an element in a list
print(list(p.query("result(orange).")))  # Return True if element in list

但我需要将列表作为一个单独的对象,因为在问题之前执行一些操作。帮助我如何在 Prolog

中发送对象
from pyswip import Prolog
p = Prolog()
fruits = [apple,banana,orange]
p.assertz("How send to list fruits ???") # I dont know how to write this request  

谢谢大家的预支

我不知道 PrologPySwip,我不知道我是否理解问题,但它看起来像普通字符串,因此您可以使用 "fruit( {} )".format(fruits) 或使用 f-string f"fruit( {fruit} )"

from pyswip import Prolog

p = Prolog()

fruits = ['apple','banana','orange']

text = f"fruits({fruits})"
print(text)

p.assertz(text)
p.assertz("result(X) :- fruits(L), member(X, L)")

print(list(p.query("result(orange).")))

但在 Python 中它必须是带字符串的列表。

它会创建字符串 fruits(['apple', 'banana', 'orange']) 并在引号 ' ' 中包含项目。

我不知道引号是否有问题,但如果您需要不带引号

fruits = ['apple','banana','orange']

text = ','.join(fruits)     # apple,banana,orange

text = f"fruits([{text}])"  # fruits([apple,banana,orange])

print(text)