Python 试图访问嵌套列表中的字符串元素

Python 试图访问嵌套列表中的字符串元素,python,Python,我是新来的 我很难弄明白这一点,我真的很想得到一些建议。事实上,我还在学习python的基础知识,所以如果这是一件愚蠢的事情,请容忍我 其思想是提供一个列表作为输入,并包含在由其他列表组成的列表中。然后我要把它转换成一个问题和答案,并存储在字典里。到目前为止,这就是我想到的,我目前一直在访问嵌套列表,因为每个列表的第一个索引都是字符串,例如[+,-,*,/] 我当前遇到以下错误: if (input[x][0]) == "+": TypeError: list i

我是新来的

我很难弄明白这一点,我真的很想得到一些建议。事实上,我还在学习python的基础知识,所以如果这是一件愚蠢的事情,请容忍我

其思想是提供一个列表作为输入,并包含在由其他列表组成的列表中。然后我要把它转换成一个问题和答案,并存储在字典里。到目前为止,这就是我想到的,我目前一直在访问嵌套列表,因为每个列表的第一个索引都是字符串,例如[+,-,*,/]

我当前遇到以下错误:


    if (input[x][0]) == "+":

TypeError: list indices must be integers or slices, not list
以下是我目前的代码:

    def math(input):
        new_list = []
        for x in input:
            if (input[x][0]) == "+":
                if (input[x][3]):
                    math = (input[x][1]) + (input[x][2]) + (input[x][3])
                    str_math = "{1} {0} {2} {0} {3}".format((input[x][0]), (input[x][1]), (input[x][2]), (input[x][3]))
                else:
                    math = (input[x][1]) + (input[x][2])
                    str_math = "{1} {0} {2}".format((input[x][0]), (input[x][1]), (input[x][2]))
    
                qnsans = {
                    "qns" : str_math,
                    "ans" : math
                }
        
            new_list.append(qnsans)
        return print(new_list)
    
    def main():
        input_list = [["+",1,3,3], ["-",2,5,-1]]
        math(input_list)
    
    
    if __name__ == '__main__':
        main()
如果您能给我一些建议,我将不胜感激。谢谢

编辑: 嗨,伙计们,谢谢你们的回复,这都是因为我在列表和循环方面研究不够而犯的错误。我很感谢您的回复,我会继续改进。

您可以使用x作为元素对输入进行迭代。然后将此元素作为索引,使其输入[input[0]][0]。没什么意义,对吧?应该是

for x in input:
    if (x[0]) == "+":

这是因为你的输入列表是一个列表列表。 所以foreach中的x等于[+,1,3,3],而不是+或1或2

您必须添加另一个,例如:

定义数学输入: 新列表=[] 对于输入中的x: 对于x中的元素: 如果输入[element][0]==+: 如果输入[元素][3]: ... def主: 输入列表=[+,1,3,3],-,2,5,-1]] 数学输入表 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 主要的
你检查过x的值和你期望的值吗?顺便说一句,返回打印。。。没有道理。查看如果输入[x][0]=+:应该是如果x[0]=+:因为for语句已经从输入中提取了所需的列表。Hm:/n您似乎对列表的工作方式缺乏基本了解。如果x是一个列表,那么您需要x[0]。那么输入[x]就没有意义了。x已经是你们认为的输入[x]了。啊,我明白了。很抱歉,因为我不知道当它运行for语句时,它已将列表提取出来。