#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]
Комментариев нет:
Отправить комментарий