丑陋的二维列表。为什么?

Ugly 2 dimensional list. Why?

我想弄清楚为什么我的列表在打印时看起来很难看:

alfa = []
alfa.append([])
alfa.append([])
a = 0
a = float(a)
print("Input the points, one per line as x,y.\nStop by entering an empty line.")
while a == 0:
    start = input()
    if start == '':
        a = a + 1
    else:
        alfa[0].append(start.split(",")[0:1])
        alfa[1].append(start.split(",")[1:2])
print(alfa)

输入:

2,3
12,56
1,2
a

我明白了:

[[['2'], ['12'], ['1']], [['3'], ['56'], ['2']]]

如果我尝试在网上找到这个简单的程序:

elements = []

elements.append([])
elements.append([])

elements[0].append(1)
elements[0].append(2)

elements[1].append(3)
elements[1].append(4)

print(elements[0][0])

print(elements)

我明白了:

[[1, 2], [3, 4]]

为什么这个结果比我的整齐很多?

尝试:

alfa[0].append(int(start.split(",")[0]))
alfa[1].append(int(start.split(",")[1]))
>>>[[2, 12, 1], [3, 56, 2]]

你得到引号是因为 input() 将输入解释为字符串。它不知道您希望您键入的内容是一个数字,因此它必须以默认方式处理它。你必须告诉代码输入应该被解释为 int.

其次,当您使用 [0:1] 获取由 0 到 0 的条目组成的数组时,您正在对数组进行切片,这与直接获取元素 0 相同,只是您获取的数组为一个元素而不仅仅是你想要的元素。本质上,您插入的是 [2] 而不是 2

您输入的数据是字符串,如引号所示。输入后将字符串转换为整数。如果你想要 [1, 2] 格式没有额外的括号,那么你需要在 alfa[0] 和 alfa[1] 等中放置数字..

alfa = []
alfa.append([])
alfa.append([])
a = 0
a = float(a)
print("Input the points, one per line as x,y.\nStop by entering an empty line.")
while a == 0:
    start = input()
    if start == '':
        a = a + 1
    else:
        alfa[0].append(int(start.split(",")[0]))
        alfa[1].append(int(start.split(",")[1]))
print(alfa)

哦,我看到@Andrew McDowell 在这一点上击败了我。好吧,无论如何,你去...