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

时间:2018-10-24 15:35:43

标签: python-3.x list code-cleanup

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

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]]

为什么这个结果比我的要整洁?

2 个答案:

答案 0 :(得分: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 :(得分:1)

输入的数据是字符串,如引号所示。输入后将字符串转换为整数。如果要使用[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击败了我。好了,你还是去...