Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Semen-Semenich
583 / 369 / 295
Регистрация: 21.03.2016
Сообщений: 1,122
1

обработка списка

23.05.2016, 22:59. Просмотров 275. Ответов 10
Метки нет (Все метки)

смысл вот в чем
Python
1
2
3
a = ['10', '20', '30', '40', '50', '60']
for x in range(len(a)-1,-1,-1):
    print (x,a[x])
так я могу получать индекс элемента и сам элемент с конца списка и удалять нужный по условию

возможно ли такое при использовании функции enumerate() ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2016, 22:59
Ответы с готовыми решениями:

Обработка списка
Дан список: my_list = ,,,] Нужно найти максимальный элемент списка

Обработка Списка
Всем привет, Есть список: PLAYERS = Хочу переименовать элементы в...

Обработка и удаление элементов списка
Помогите решить такую задачу: есть список, состоящий из вложенных списков....

Создание списка из элемента списка
Здравствуйте. Вопрос такой. Есть строка, вводимая пользователем. Строка...

Обработка списка: после каждого нуля добавить предшествующую часть списка
Дан список чисел, нужно после каждого нуля добавить предшествующую часть...

10
Whost
27 / 27 / 23
Регистрация: 13.02.2016
Сообщений: 131
23.05.2016, 23:11 2
Ну вот так, например:
Python
1
2
for x, i in enumerate(a[::-1], start = 1):
        print(len(a) - x, i)
0
Semen-Semenich
583 / 369 / 295
Регистрация: 21.03.2016
Сообщений: 1,122
23.05.2016, 23:22  [ТС] 3
немного не то. список то понятно что читается с конца но вот индексы элементов не соответствуют. просто идет счет элементов от 1 и до их количества а мне надо их индексы с конца как с функцией len()
0
oldnewyear
411 / 409 / 157
Регистрация: 21.05.2016
Сообщений: 1,320
24.05.2016, 02:58 4
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
немного не то. список то понятно что читается с конца но вот индексы элементов не соответствуют. просто идет счет элементов от 1 и до их количества а мне надо их индексы с конца как с функцией len()
Python
1
2
3
a = list(enumerate(['10', '20', '30', '40', '50', '60']))
for x in range(len(a)-1,-1,-1):
    print (a[x][0], a[x][1])
0
Semen-Semenich
583 / 369 / 295
Регистрация: 21.03.2016
Сообщений: 1,122
24.05.2016, 09:40  [ТС] 5
oldnewyear это же исходный вариант
с лишними движениями. суть в том что бы range не использовать в цикле при обработке массива потому что пишут что это из сишного языка и на питоне так не делают. суть всей задачи обработать исходный список не создавая новый по условию замена или удаление при повторении элемента в списке
Python
1
2
3
4
5
6
7
a = ['10', '20', '30', '40', '50', '60','40','40']
for x in range(len(a)-1,-1,-1):
    if a.count(a[x]) >2 :
        del a[x]
    elif a.count(a[x]) == 1:
        a[x] = 'NO'
print (a)
0
oldnewyear
411 / 409 / 157
Регистрация: 21.05.2016
Сообщений: 1,320
24.05.2016, 10:06 6
Не думаю, что существуют какие-либо объективные причины отказывать от range. Если не нравится range, можно использовать for x in a
0
Semen-Semenich
583 / 369 / 295
Регистрация: 21.03.2016
Сообщений: 1,122
24.05.2016, 10:15  [ТС] 7
Цитата Сообщение от oldnewyear Посмотреть сообщение
Не думаю, что существуют какие-либо объективные причины отказывать от range
я тоже так считаю что не всегда можно решить задачу с помощью enumerate()
просто читал эту ветку форума и заинтересовал такой вопрос получить индекс эл. и сам эл. с конца списка функцией enumerate(). спасибо за ответы
0
dondublon
2146 / 1064 / 213
Регистрация: 17.03.2012
Сообщений: 6,417
Записей в блоге: 5
30.05.2016, 11:33 8
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
так я могу получать индекс элемента и сам элемент с конца списка и удалять нужный по условию
Если нужно удалять по условию - может, воспользоваться filter? Или конструкцией
Python
1
[x for x in lst if p(x)]
0
askurandrio
Заблокирован
30.05.2016, 17:22 9
ну намудрили......
Python
1
2
3
a = ['10', '20', '30', '40', '50', '60']
for idx,  x in reversed(enumerate(a)):
    print (a[idx], ' ', x)
0
Semen-Semenich
583 / 369 / 295
Регистрация: 21.03.2016
Сообщений: 1,122
30.05.2016, 18:24  [ТС] 10
Цитата Сообщение от askurandrio Посмотреть сообщение
Python
1
2
3
a = ['10', '20', '30', '40', '50', '60']
for idx, *x in reversed(enumerate(a)):
* * print (a[idx], ' ', x)
выдает
for idx, x in reversed(enumerate(a)):
TypeError: argument to reversed() must be a sequence

я же писал что удалять элемент по условию как в примере
Python
1
2
3
4
5
a = ['10', '20', '30', '40', '50', '60']
for x in range(len(a)-1,-1,-1):
    if '4' in a[x] or '1' in a[x]:
        del a[x]
print (a)
['20', '30', '50', '60']
так вот суть в том не то чтоб массив наоборот прочитать а возможность удалять элементы
0
askurandrio
Заблокирован
31.05.2016, 13:23 11
Да ошибка есть.
Python
1
2
3
a = ['10', '20', '30', '40', '50', '60']
for idx,  x in reversed(list(enumerate(a))):
    print (a, ' ', x)
Если хотите удалить елемент по условию:
Python
1
2
3
4
def temp(i): # temp получает елемент списка и возвращает true если его надо удалить
    if i == '60':
        return True
list(map(a.remove, filter(temp,a)))
0
31.05.2016, 13:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2016, 13:23

Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка.
Необходимо разработать программу, в которой выполняется ввод списка записей...

Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен
Вывести на экран все записи товаров, определенного ценового диапазона. Ценовой...

Обработка списка
Приветствую, ребята. Пишу вот такой код: //объявление переменных int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru