为什么当我尝试创建数组时,它说我使用的是“元组”?

时间:2018-06-04 21:04:55

标签: python arrays tuples

我正在尝试为帐户系统创建一个二维数组。阵列的每一层存储有关用户的3条关键信息。添加新用户后,他们输入3条信息,并将其添加到阵列中。然而,它反而说了一些关于“元组”的内容。

我知道元组是他们自己的东西。我不是试图使用元组,只是一个普通的数组。

PS。这是我第一次在stackoverflow上发布一个问题,对于那些躲闪的缩进很抱歉,我无法理解。

accounts = []
accountDetails = [[],[],[]]
quitt = False
while quitt == False:
    print("Would you like to:","\n 1. Make an account","\n 2. Check an account","\nPlease enter '1' or '2'")
    option = input()
    if option == "1":
        name = input("Enter the name for your account: ")
        accounts.append(name)
        print(accounts)
        accountNumber = len(accounts)
        print("Your account number is ", accountNumber)
        accountDetails[0, accountNumber]= input("Please enter your GDP: ")
        accountDetails[1, accountNumber] = input("Please enter how much money is in your account: ")
        accountDetails[2, accountNumber] = input("Please enter your inflation rate: ")
        print(accountDetails)

3 个答案:

答案 0 :(得分:1)

变化:

accountDetails[0, accountNumber]= input("Please enter your GDP: ")
accountDetails[1, accountNumber] = input("Please enter how much money is in your account: ")
accountDetails[2, accountNumber] = input("Please enter your inflation rate: ")

为:

accountDetails[0][accountNumber]= input("Please enter your GDP: ")
accountDetails[1][accountNumber] = input("Please enter how much money is in your account: ")
accountDetails[2][accountNumber] = input("Please enter your inflation rate: ")

这是python访问列表列表的方式

答案 1 :(得分:0)

问题在于:

accountDetails[0, accountNumber]

该值0, accountNumber是两个值的元组。每当你用逗号分隔值时,除了一些特殊情况,比如函数参数,你就会产生一个元组。这是x, y = 1, 2的工作原理,return spam, eggsfor i in 1, 2, 4, 8:等等。

那么,为什么它会告诉你“关于元组的东西”而不仅仅是提出SyntaxError?因为Python允许你使用元组作为索引,主要用于像numpy提供的那些多维数组。使用numpy 2D数组,arr[i, j]可以获取i行和j列的元素。

但是你没有这里的numpy数组,你有一个普通的list,并且列表不知道如何处理索引元组。 (事实上​​,你的列表甚至不知道它是一个列表列表,它只是一个任何事物的列表,你碰巧存储了列表。)

你想要的可能是:

accountDetails[0][accountNumber]

换句话说,您要求列表列表accountDetails获取其元素0,然后向结果列表询问其元素#accountNumber

答案 2 :(得分:0)

在列表 L 的索引 i 中选择元素的表示法是L[i]

您似乎在尝试选择语法为L[x, y]的元素(accountDetails[0, accountNumber]

选择内部列表元素的正确方法是L[x][y]

它抱怨是因为它认为你试图使用元组(a, b, c...)来索引列表,而不是预期的整数。