# Expression Binding Help - Passing list/array/sequence as an argument to a Python Script

**URL:** <https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053>\
**Category:** Ignition\
**Tags:** ignition79, scripting\
**Created:** [December 13, 2021, 3:32pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053 "2021-12-13T15:32:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gindember\_Diaz](https://avatars.discourse-cdn.com/v4/letter/g/f14d63/32.png) [@Gindember\_Diaz](https://forum.inductiveautomation.com/u/Gindember_Diaz)\
**Post date:** [December 13, 2021, 3:32pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053/1 "2021-12-13T15:32:44Z")

</div>

I am attempting to run a scrip function in a expression binding. My python function accepts two arguments, both which need to be a list.

Example:  
def check(tag1,tag2):  
do something  
return(some string)

tag1 are ints and tag2 being strings

Expression Binding Language:  
runScript(“project.check”,0,[1,1],[‘string1’,‘string2’] )  
//This don’t work is it possible to make list in expression language  
//I know it possible in latest version of ignition but we are working in prior version.

---

<div class="post-metadata">

**Author:** ![jespinmartin1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jespinmartin1/32/57175_2.png) [@jespinmartin1](https://forum.inductiveautomation.com/u/jespinmartin1)\
**Post date:** [December 13, 2021, 3:47pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053/2 "2021-12-13T15:47:08Z")

</div>

Your syntax is not correct. You may want to pass list or arrays as encode strings.

```auto
runScript(“project.check”,0,"[1,1]","['string1','string2']")

```

Then decode as real object with

```auto
import ast
values = "[1,1]"
paths = "['string1','string2']"
values = ast.literal_eval(values)
paths = ast.literal_eval(paths)

```

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [December 13, 2021, 3:52pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053/3 "2021-12-13T15:52:05Z")

</div>

It might be easier to use a script transform, maybe with an expression structure binding.

edit - ah, didn’t see you’re on 7.9. I don’t know anything about 7.9.

---

<div class="post-metadata">

**Author:** ![Gindember\_Diaz](https://avatars.discourse-cdn.com/v4/letter/g/f14d63/32.png) [@Gindember\_Diaz](https://forum.inductiveautomation.com/u/Gindember_Diaz)\
**Post date:** [December 13, 2021, 4:00pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053/4 "2021-12-13T16:00:28Z")

</div>

I haven’t tried it yet but this should work. But since my strings are in tag paths I would need to use a system.tag.read () to get the string. Thanks

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 13, 2021, 4:14pm UTC](https://forum.inductiveautomation.com/t/expression-binding-help-passing-list-array-sequence-as-an-argument-to-a-python-script/54053/5 "2021-12-13T16:14:24Z")

</div>

Consider using my [objectScript](https://www.automation-pros.com/simaids/doc/expression.objectscript.html) function (from [Simulation Aids](https://inductiveautomation.com/moduleshowcase/module/automation-professionals-llc-simulation-aids)) instead of `runScript`. `runScript()` only passes extra expression arguments when the first (string) argument evaluates to a python function.

My `objectScript()` accepts any python expression as a string, and delivers expression arguments in a local variable. Which means your python expression can listify your arguments without relying on the stringification of your lists. Your attempt with `runScript` would become this:

```auto
objectScript("project.check([args[0], args[1]], [args[2], args[3]])",
	1, 1, 'string1', 'string2')

```

If `project.check` accepts list-like objects (such as tuples), not just true lists, that can be simplified with slicing:

```auto
objectScript("project.check(args[:2], args[2:])",
	1, 1, 'string1', 'string2')

```
