Форум сайта python.su
1
fata1ex
paraman, возьмите любой учебник и прочитайте хотя бы первые пару сотен страниц. Лутц, Саммерфилд, Пилгрим. Это абсолютная база, которая расписана людьми специально для обучения. Без её понимания далеко не уйти.
Фразы вродеparamanвыдают, что вы этой базой не владеете, а значит нужно её приобретать.
мы преобразуем массив kgs в int и производим сравнение. Как же он потом вытаскивает индексы, да ещё и потом вытаскивает значения из других массивов с теми же индексами.
.
Офлайн
52
paraman, для начала подойдёт очень даже. Кодить никак не мешает тратить вечером по часу перед сном, чтобы за неделю-другую овладеть основами. Жесткой критики здесь нет, просто советы.
Насчет удаления. Я вообще не понимаю, зачем вам что-то удалять :) Ладно бы ещё вы после list.index удаляли элемент, чтобы он не попал в область следующего поиска, но здесь-то зачем.
Офлайн
1
fata1ex
paraman, для начала подойдёт очень даже. Кодить никак не мешает тратить вечером по часу перед сном, чтобы за неделю-другую овладеть основами. Жесткой критики здесь нет, просто советы.
Насчет удаления. Я вообще не понимаю, зачем вам что-то удалятьЛадно бы ещё вы после list.index удаляли элемент, чтобы он не попал в область следующего поиска, но здесь-то зачем.
Офлайн
52
Если честно, я не примомню, чтобы в жизни использовал remove. Это, как минимум, неэффективно, а зачастую (по-моему) говорит о неправильном подходе к решению. Максимум - pop. Да и сокращать тут нечего. И, кажется, я вам уже писал, что не нужно стремиться к сокращению кода, нужно стремиться к его упрощению. То что привёл Ed, написано just for fun, не более. Подобным образом можно записать очень многое, но если вы так будете писать не в выходные в треде для новичков, а в будние на работе, то никто вас по голове не погладит.
a, b, c = [], [], [] a = b = c = []
Отредактировано fata1ex (Июль 15, 2012 00:42:25)
Офлайн
1
fata1ex
Если честно, я не примомню, чтобы в жизни использовал remove. Это, как минимум, неэффективно, а зачастую (по-моему) говорит о неправильном подходе к решению. Максимум - pop. Да и сокращать тут нечего.a, b, c = []. []. [] a = b = c = []
Отредактировано paraman (Июль 15, 2012 01:09:25)
Офлайн
1
А на тему .remove?
Офлайн
20
Ну, можно фильтровать:
new_fruits = [element for element in fruits if element != 'None'] new_fruits2 = filter(lambda element: element != 'None', fruits)
def validate((kg, fruit1, fruit2)): if 'None' in (fruit1, fruit2): return False try: int(kg) except ValueError: return False return True new_fruits = filter(lambda triple: validate(triple), zip(kg, fruits, fruits2)) kg, fruits, fruits2 = zip(*new_fruits) # unzip
weights = {} new_fruits = {} for kilo, fruit1, fruit2 in zip(kg, fruits, fruits2): try: weight = int(kilo) except ValueError: continue if 'None' not in (fruit1, fruit2): weights.setdefault(weight, []).extend((fruit1, fruit2)) new_fruits[fruit1] = new_fruits[fruit2] = weight
>>> weights[13] ['Pineapple', 'Jackfruit', 'Banana', 'Melon; cantaloupe'] >>> weights[10] ['Apricot', 'Grapefruit', 'Grape', 'Kaffir lime'] >>> new_fruits['Apricot'] 10 >>> new_fruits['Fig'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Fig' >>> new_fruits['Quince'] 6 >>> >>> for w, fruits in weights.items(): ... if 5 <= w <= 7: ... print w, fruits ... 6 ['Quince', 'Guava']
Отредактировано EBFE (Июль 15, 2012 04:05:51)
Офлайн