Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

Сравнивание однотипных элементов списка друг с другом в Python

#python #python_3x


Дан список:

list = [220.32, 205.1, 204.6, 203.2, 203.75, 203.25, 203.75, 203.5]


Необходимо сравнить элементы списка друг с другом в цикле и больший элемент
разделить на меньший. Но при этом не присваивать имена каждому элементу списка. 

Мой код не дает сделать этого:  

for i in list:  
     if list[i] > list[i + 1]:  
     a = (list[i] / list[i + 1] ) 
     else:  
         a = (list[i + 1] / list[i] ) 
     print(a)  


Пользоваться библиотеками нельзя.   

Выдает исключение:  


  Traceback (most recent call last):   File "", line 2, in
  
   TypeError: list indices must be integers or slices, not
  
  float`

    


Ответы

Ответ 1



myList = [220.32, 205.1, 204.6, 203.2, 203.75, 203.25, 203.75, 203.5] [ [myList[i-1]/myList[i] if myList[i-1]>myList[i] else myList[i]/myList[i-1]] for i in range(1, len(myList)) ] [[1.0742077035592394], [1.0024437927663734], [1.0068897637795275], [1.0027066929133859], [1.002460024600246], [1.002460024600246], [1.0012285012285012]] или так: for i in range(1, len(myList)): if myList[i-1]>myList[i]: a = myList[i-1]/myList[i] else: a = myList[i]/myList[i-1] print(a) 1.0742077035592394 1.0024437927663734 1.0068897637795275 1.0027066929133859 1.002460024600246 1.002460024600246 1.0012285012285012

Ответ 2



# a = [((a / b) if (a > b) else (b / a)) for (a, b) in zip(myList, myList[1:])] # import operator, itertools # a = list(itertools.starmap(operator.truediv, map(reversed, map(sorted, zip(myList, myList[1:]))))) myList = [220.32, 205.1, 204.6, 203.2, 203.75, 203.25, 203.75, 203.5] a = list(next(i)/next(i) for i in map(iter, map(reversed, map(sorted, zip(myList, myList[1:]))))) print(a) # [1.0742077035592394, 1.0024437927663734, 1.0068897637795275, 1.0027066929133859, 1.002460024600246, 1.002460024600246, 1.0012285012285012]

Комментариев нет:

Отправить комментарий