Python:通过命令提示符在嵌套的数字列表中进行解析
我正在尝试编写一个python程序(rec_list_sum.py),该程序递归地查找嵌套数字列表的和 我输入到Powershell终端:Python:通过命令提示符在嵌套的数字列表中进行解析,python,list,recursion,nested,numbers,Python,List,Recursion,Nested,Numbers,我正在尝试编写一个python程序(rec_list_sum.py),该程序递归地查找嵌套数字列表的和 我输入到Powershell终端: python rec_list_sum.py [1,2,3,[4,5],[6,7],8] 并且我的函数接受如下数组: import sys def recursive_list_sum(array): total = 0 for ele in array: if isinstance(ele, list):
python rec_list_sum.py [1,2,3,[4,5],[6,7],8]
并且我的函数接受如下数组:
import sys
def recursive_list_sum(array):
total = 0
for ele in array:
if isinstance(ele, list):
total = total + recursive_list_sum(ele)
else:
total = total + ele
return total
这是我遇到的问题,解析中的输入:
if __name__ == "__main__":
string = sys.argv[1]
digits = [int(i) for i in str(string)]
ans = recursive_list_sum(digits)
print(ans)
我的代码可以在jupyter笔记本上运行,但我似乎无法使用PowerShell将此输入解析为python。有人能解释一下如何使用吗?您可以使用
ast.literal\u eval
将输入字符串解析为Python表达式:
from ast import literal_eval
ans = recursive_list_sum(literal_eval(sys.argv[1]))
您可以这样编写解析器:
def parse(s):
def _parse(s):
output = []
index = 0
num = ''
while index < len(s):
char = s[index]
index += 1
if char.isdigit():
num += char
if char in ',]' and num:
output.append(int(num))
num = ''
if char == '[':
sublist, offset = _parse(s[index:])
output.append(sublist)
index += offset
elif char == ']':
break
return output, index
return _parse(s)[0][0]
返回:
[1, 2, 3, [4, 5], [6, 7], 8]
可以将json库与方法加载()一起使用 然后,ans将是一种可以正常迭代的列表类型
>>> type(json.loads(ans))
<class 'list'>
>类型(json.loads(ans))
相信我,我已经浏览了该网站上的现有帖子,但没有一篇涉及到嵌套数字列表中的解析。如果你是唯一一个使用它的人,你可以使用evaldigits=eval(string)
有效,谢谢!除了导入ast,还有其他方法吗?很高兴能为您提供帮助。您可以参考我的另一个答案,了解如何自己解析输入的示例。
import json
ans = json.loads(sys.argv[1])
>>> type(json.loads(ans))
<class 'list'>