Найти - Пользователи
Полная версия: Индекс в списке
Начало » Python для новичков » Индекс в списке
1 2 3
paraman
fata1ex
paraman, возьмите любой учебник и прочитайте хотя бы первые пару сотен страниц. Лутц, Саммерфилд, Пилгрим. Это абсолютная база, которая расписана людьми специально для обучения. Без её понимания далеко не уйти.

Фразы вроде
paraman
мы преобразуем массив kgs в int и производим сравнение. Как же он потом вытаскивает индексы, да ещё и потом вытаскивает значения из других массивов с теми же индексами.
выдают, что вы этой базой не владеете, а значит нужно её приобретать.
.

Вы крутой телепат. Я вообще не программист. Полторы недели назад осознал, что мне нужно познать программирование на питоне. Скачал книгу Саммерфилд - Программирование на Python 3.2009
Прочитал 90 страниц и не удержался начал кодить. Только прошу воздержаться от жёсткой критики, что нужно было дочитать до конца. Очень хотелось начать. Что-нибудь скажите про эту книгу или посоветуете другую?

Насчет удаления. Мне интересно, как в данном примере можно сократить портянку из удаления переменных из списка.
fata1ex
paraman, для начала подойдёт очень даже. Кодить никак не мешает тратить вечером по часу перед сном, чтобы за неделю-другую овладеть основами. Жесткой критики здесь нет, просто советы.

Насчет удаления. Я вообще не понимаю, зачем вам что-то удалять :) Ладно бы ещё вы после list.index удаляли элемент, чтобы он не попал в область следующего поиска, но здесь-то зачем.
paraman
fata1ex
paraman, для начала подойдёт очень даже. Кодить никак не мешает тратить вечером по часу перед сном, чтобы за неделю-другую овладеть основами. Жесткой критики здесь нет, просто советы.

Насчет удаления. Я вообще не понимаю, зачем вам что-то удалять Ладно бы ещё вы после list.index удаляли элемент, чтобы он не попал в область следующего поиска, но здесь-то зачем.

В жизни не зачем, в теории нужно. Хочу понять, как можно сократить такую портянку.
fata1ex
Если честно, я не примомню, чтобы в жизни использовал remove. Это, как минимум, неэффективно, а зачастую (по-моему) говорит о неправильном подходе к решению. Максимум - pop. Да и сокращать тут нечего. И, кажется, я вам уже писал, что не нужно стремиться к сокращению кода, нужно стремиться к его упрощению. То что привёл Ed, написано just for fun, не более. Подобным образом можно записать очень многое, но если вы так будете писать не в выходные в треде для новичков, а в будние на работе, то никто вас по голове не погладит.

a, b, c = [], [], []
a = b = c = []

paraman
fata1ex
Если честно, я не примомню, чтобы в жизни использовал remove. Это, как минимум, неэффективно, а зачастую (по-моему) говорит о неправильном подходе к решению. Максимум - pop. Да и сокращать тут нечего.

a, b, c = []. []. []
a = b = c = []


Спасибо Вам за всё. Вы очень крутой.
paraman
А на тему .remove?
EBFE
Ну, можно фильтровать:
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'] 
вообще по поводу оптимизации - правильно подобранная структура данных + соответсвующие алгоритмы рулят
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB