Форум сайта python.su
1
Изучая мануал http://docs.python.org/release/3.1.5/tutorial/datastructures.html
Обнаружил хрень.
a = [66.25, 333, 333, 1, 1234.5] a.index(333) 1
Офлайн
19
paraman
Получается, что вообще ни как не достать индекс второго числа 333 или же есть какое заклинание?
a = [66.25, 333, 333, 1, 1234.5] [i for i, n in enumerate(a) if n == 33]
Отредактировано cutwater (Июль 13, 2012 23:51:55)
Офлайн
1
cutwaterparaman
Получается, что вообще ни как не достать индекс второго числа 333 или же есть какое заклинание?
Заклинание называется google и документация. Еще голова и ровные руки. Пропорции подбирать по вкусу.a = [66.25, 333, 333, 1, 1234.5] [i for i, n in enumerate(a) if n == 33]
Но возможно Вы хотите не этого. Для более правильного совета необходимо понимать общую задачу.
fruits = ['Apricot', 'Avocado', 'Pawpaw', 'Quince', 'Pineapple', 'Orange', 'Banana', 'Bergamot', 'Grape', 'Cherry', 'Pomegranate'] fruits2 = ['Grapefruit', 'Pear', 'fruits', 'Guava', 'Jackfruit', 'Durian', 'Melon; cantaloupe', 'Fig' 'Calamondin', 'Kaffir lime', 'Cashew', 'Kiwi'] kg = ['10','4','10','6','13','1','13','36:7','10','20:10', '4'] for f in kg: try: assert int(f)>=5 i = kg.index(f) print 'kg:', f, fruits[i],'and',fruits2[i] except: pass
kg: 10 Apricot and Grapefruit
kg: 10 Apricot and Grapefruit
kg: 6 Quince and Guava
kg: 13 Pineapple and Jackfruit
kg: 13 Pineapple and Jackfruit
kg: 10 Apricot and Grapefruit
Офлайн
31
Может это http://python.su/forum/topic/15055/
Офлайн
1
sanodin
Может это http://python.su/forum/topic/15055/
Офлайн
31
paramansanodin
Может это http://python.su/forum/topic/15055/
Под пример не понял, как использовать.
достать индекс второго числа 333
Офлайн
1
sanodinparamansanodin
Может это http://python.su/forum/topic/15055/
Под пример не понял, как использовать.
Значит я не понял Вашедостать индекс второго числа 333
Офлайн
52
paraman, если вы думаете, что увидев ваш код, мы все сразу поймем, что вам нужно, то вы ошибаетесь. Опишите нормально, что вам нужно. Что на входе и что вы хотите получить на выходе.
Есть замечательная функция enumerate, которую вы проигнорировали. Кажется, она должна помочь.
Так же, чтобы найти k-ое вхождение вхождения элемента elem в список можно сделать что-нибудь в этом роде:
>>> my_list = [1, 2, 3] * 10 >>> def find_index(my_list, elem, occurrence_num=1): ... current_idx = -1 ... for occurrence in xrange(occurrence_num): ... current_idx = my_list.index(elem, current_idx + 1) ... ... return current_idx ... ... >>> >>> find_index(my_list, 1, 3) 6 >>> find_index(my_list, 1, 4) 9 >>> find_index(my_list, 1, 5) 12 >>> find_index(my_list, 2, 5) 13 >>> find_index(my_list, 2, 4) 10 >>> find_index(my_list, 2, 3) 7
for f in kg: i = kg.index(f)
except: pass
assert
print 'kg:', f, fruits[i],'and',fruits2[i]
Отредактировано fata1ex (Июль 14, 2012 12:53:30)
Офлайн
14
fata1exНельзя-то нельзя, но не подскажешь ли, как получить список всех возможных исключений, которые может бросить код?
except: pass
Так писать нельзя.
Офлайн
13
И я хочу поучаствовать в конкурсе телепатов. Претендую на первое место :)
fruits = ['Apricot', 'Avocado', 'Pawpaw', 'Quince', 'Pineapple', 'Orange', 'Banana', 'Bergamot', 'Grape', 'Cherry', 'Pomegranate'] fruits2 = ['Grapefruit', 'Pear', 'fruits', 'Guava', 'Jackfruit', 'Durian', 'Melon; cantaloupe', 'Fig' 'Calamondin', 'Kaffir lime', 'Cashew', 'Kiwi'] kg = ['10','4','10','6','13','1','13','36:7','10','20:10', '4'] for kgs, fr1, fr2 in zip(kg, fruits, fruits2): try: if int(kgs) >= 5: print 'kg:', kgs, fr1, 'and', fr2 except ValueError: continue
Офлайн