【问题标题】:Python Lists Unsolved [duplicate]Python列出未解决的[重复]
【发布时间】:2016-10-11 01:02:44
【问题描述】:

我对 Python 还是很陌生,虽然我已经学习了大部分基础知识,尽管我需要能够从 csv 文件中读取(目前为止有效),然后将此 csv 中的数据附加到有效的列表中,并且我不确定的部分是使用其中两个列表和 / 120 和 * 100

例如 list1 的第一个分数是 55,list2 是 51,我想将它们合并到一个等于 106 的列表中,然后添加一些可以除以然后乘以每个的东西,因为每个列表中有 7 个不同的数字。

import csv 
list1 = []
list2 = []
with open("scores.csv") as f:
reader = csv.reader(f)
for row in reader:

    list1.append(row[1])
    list2.append(row[2])
print (list1)
print (list2)

输出

['55', '25', '40', '21', '52', '42', '19']

['51', '36', '50', '39', '53', '33', '40']

预期输出(想要的输出)

['106', '36', '90', '60', '105', '75', '59']

然后需要除以 120 和 * 100。

【问题讨论】:

    标签: python list csv


    【解决方案1】:

    查看zip

    for a, b in zip(list1, list2):
        # .... do stuff
    

    也许对你来说:

    output = [((int(a)+int(b))/120)*100 for a, b in zip(list1, list2)]
    

    【讨论】:

    • a 和 b 是什么意思?
    • zip 函数将遍历两个列表,从每个列表中产生值,直到耗尽最短的一个。在您的示例中,在第一次迭代中 a = '55' 和 b = '51'。然后在第二次迭代 a = '25' 和 b = '36' 等。
    • 将百分比转换为整数的最佳方法是什么,因为它们打印有很多小数 atm?
    • 取决于您要如何处理数据丢失。转换为 int 只会删除十进制值。你也可以四舍五入,等待哪个版本的 py,做不同的事情。
    【解决方案2】:

    制作一个新列表,将您所需的计算考虑在内。

    >>> list1 = ['55', '25', '40', '21', '52', '42', '19']
    >>> list2 = ['51', '36', '50', '39', '53', '33', '40']
    >>> result = [(int(x)+int(y))/1.2 for x,y in zip(list1, list2)]
    >>> result
    [88.33333333333334, 50.833333333333336, 75.0, 50.0, 87.5, 62.5, 49.16666666666667]
    

    【讨论】:

    • 列表 1 和 2 没有硬编码到程序中,它们来自 csv 文件,我尝试使用第 3 行,它返回的输出就像 []
    • @1230 - 最后,当您有 list1list2 打印您描述的输出时,将它们处理成如图所示的结果。
    • 什么会使它们格式化例如 88%、51% 没有小数,所以只是整数
    • @1230 - [round((int(x)+int(y))/1.2) for...
    • 似乎仍在打印大量小数
    猜你喜欢
    • 2020-05-18
    • 2016-12-06
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多