Python:附加列表实际上并没有附加它?

时间:2016-03-21 22:33:29

标签: python csv append

我有一个包含姓名和分数的CSV文件。我已经使每一行成为一个单独的列表,但是当将一个变量附加到此列表时,它实际上并没有这样做。 我的代码是:

import csv
f = open('1scores.csv')
csv_f = csv.reader(f)
newlist = []
for row in csv_f:
    newlist.append(row[0:4])

    minimum = min(row[1:4])
    newlist.append(minimum)
print(newlist)

文件中的数据为

Person One,4,7,4
Person Two,1,4,2
Person Three,3,4,1
Person Four,2

当然输出为['Person One', '4', '7', '4', '4'],因为最小值为4,我将其附加到列表中。但我明白了:['Person One', '4', '7', '4'], '4', 我究竟做错了什么?我希望最小值在列表中,而不是在外面但不明白。

1 个答案:

答案 0 :(得分:1)

将min添加到每一行然后追加行本身,您将先附加切片,然后将min值添加到newlist而不是切片列表:

for row in csv_f:
    row.append(min(row[1:],key=int)
    newlist.append(row)

您还可以使用列表comp:

new_list =  [row + [min(row[1:], key=int)] for row in csv_f]

您还需要key=int或者您可能会发现您会得到奇怪的结果,因为您的分数/字符串将按字典顺序进行比较:

In [1]: l = ["100" , "2"] 

In [2]: min(l)
Out[2]: '100'

In [3]: min(l,key=int)
Out[3]: '2'