2015-10-18 8 views
0

У меня есть функция:Список списков, как я могу выполнять вычисления с определенными номерами в каждом списке?

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] 

Не работает. Я гугл как сумасшедшего

+0

, как ваша функция предполагает, что, кажется, вы читаете эти данные в качестве строки/буфера, который не является действительным питоным ** списка ** так сказать, конвертируйте их в список python и повторите попытку. Если вас интересует только результат каждого кратного суб-списка, просто используйте понимание списка. – Anzel

+0

import ast ast.literal_eval ('["A", "B", "C", "D"]') – Jedani

ответ

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

Вещь, единственное, с чем мне нужно работать в данный момент, это мой readCSVfile (str1). У меня нет списков, списанных в коде! –

+0

@ ErikAngerfistNyström подсвечивает в вашем списке строку в вашем файле csv? – LetzerWille

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