【问题标题】:List of lists, how can i do calculations with specific numbers in each list?列表列表,如何使用每个列表中的特定数字进行计算?
【发布时间】:2015-10-18 21:30:43
【问题描述】:

我有一个函数:

def readCSVfile(str1):

此函数获取用户选择并读取的 CSV 文件。 每个文件都包含一个列表,如下所示:

[[1, 1, 2.2, 1.3, 9.6], [1, 2, 2.1, 2.2, 7.6], [1, 3, 2.7, 1.5, 2.2], [2, 1, 3.0, 4.5, 1.5], [2, 2, 3.1, 3.1, 4.0], [2, 3, 2.5, 2.8, 3.0], [3, 1, 1.9, 1.8, 4.5], [3, 2, 1.1, 0.5, 2.3], [3, 3, 3.5, 2.0, 7.5], [4, 1, 2.9, 2.7, 3.2], [4, 2, 4.5, 4.8, 6.5], [4, 3, 1.2, 1.8, 2.7]]

现在,在用户选择了一个文件之后,工作是让程序从我的程序生成的每个列表中打印出一些计算,但我被卡住了。 例如,我想将每个列表中的第三个和第四个数字相乘,我该如何指定?

尝试做类似的事情

readCSVfile(str1)[2]

不工作。 我已经疯狂地用谷歌搜索了

【问题讨论】:

  • 正如您的函数所建议的那样,您似乎将数据作为字符串/缓冲区读取,这不是有效的 python list 可以这么说,尝试将它们转换为 python 列表, 然后再试一次。如果您只对子列表的每个倍数的结果感兴趣,只需使用列表推导即可。
  • import ast ast.literal_eval('["A","B" ,"C" ,"D"]')

标签: python list csv


【解决方案1】:
through map and a lambda as one way:

li = [[1, 1, 2.2, 1.3, 9.6], [1, 2, 2.1, 2.2, 7.6], [1, 3, 2.7, 1.5, 2.2], [2, 1, 3.0, 4.5, 1.5], [2, 2, 3.1, 3.1, 4.0], [2, 3, 2.5, 2.8, 3.0], [3, 1, 1.9, 1.8, 4.5], [3, 2, 1.1, 0.5, 2.3], [3, 3, 3.5, 2.0, 7.5], [4, 1, 2.9, 2.7, 3.2], [4, 2, 4.5, 4.8, 6.5], [4, 3, 1.2, 1.8, 2.7]]

for el in map(lambda x: [x[0], x[1], round(x[2] * x[3],2),x[4]],li):
    print(el)

[1, 1, 2.86, 9.6]
[1, 2, 4.62, 7.6]
[1, 3, 4.05, 2.2]
[2, 1, 13.5, 1.5]
[2, 2, 9.61, 4.0]
[2, 3, 7.0, 3.0]
[3, 1, 3.42, 4.5]
[3, 2, 0.55, 2.3]
[3, 3, 7.0, 7.5]
[4, 1, 7.83, 3.2]
[4, 2, 21.6, 6.5]
[4, 3, 2.16, 2.7]

【讨论】:

  • 问题是,我现在唯一需要处理的是我的 readCSVfile(str1)。我没有写在代码中的列表!
  • @ErikAngerfistNyström 是您列表中 csv 文件中的一行的子列表?
【解决方案2】:
lst = [ [1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

for x in range(len(lst)):
    print(lst[x][2] * lst[x][3])

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2022-01-13
    • 2020-09-15
    • 2020-08-17
    • 2022-09-23
    相关资源
    最近更新 更多