0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 4
1

Списки, списки, списки. не все так просто

18.10.2016, 11:48. Показов 1987. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию, которая принимает 2 списка, содержащие одинаковое число строк, затем изменяет списки сопоставляя строки, занимающие одинаковые позиции, и удаляет из списка наибольшую из двух, если строки равны, удаляет обе.

Например, даны два списка:
Python
1
2
la = ['bear', 'tiger', 'wolf', 'whale', 'elephant']
lb = ['swan', 'cat', 'dog', 'duck', 'rabbit']
функция modi(la, lb) должна выдать те же самые строки, но изменив их на:
['bear','elephant']
['cat','dog','duck']

Вот, что я написала:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def confront(s1, s2):   # сравнивает строки
    if s1 < s2:
        return 0
    elif s2 < s1:
        return 1
    else:
        return 2
 
 
def modi(la,lb):
    latemp = []
    lbtemp = []
    i = 0
    while i < len(la):
        
 
        q = confront(la[i], lb[i])
        if q == 0:
            latemp.append(la[i])
                
        elif q == 1:
            lbtemp.append(lb[i])
              
                
        i +=1  
            
    la = latemp
    lb = lbtemp
    return la, lb
Но я не изменяю списки la и lb, а создаю пустые, заполняю их нужными элементами и переназначаю в конце la и lb.
Есть идеи, как можно именно изменять входящие списки и получить нужный результат?

!! когда я пробовала remove() - получался бред, т.к. элементы смещались
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2016, 11:48
Ответы с готовыми решениями:

Как преобразовать вложенные списки из строки в обычные списки?
Доброе утро, форумчане. Подскажите пожалуйста, мне нужно написать скрипт, который разбирает...

Списки
Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а...

Списки
Здравствуйте, я учусь питону, пишу программу по переводу слов из буквенного вида в КОИ-8,...

Списки
есть ли в Python , ка например , в Haskell такая тема пишу и готов список

4
охотник
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
18.10.2016, 14:28 2
Лучший ответ Сообщение было отмечено natasha_la как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def modi(x,y):
    for i in range(len(x)-1,-1,-1):
        if x[i]==y[i]:
            del x[i]
            del y[i]
        elif x[i]>y[i]:
            del x[i]
        else:
            del y[i]
        i-=1    
    return x,y
la = ['bear', 'tiger', 'wolf', 'whale', 'elephant']
lb = ['swan', 'cat', 'dog', 'duck', 'rabbit']
modi(la,lb)
print('la: {}\nlb: {}'.format(la,lb))
1
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 4
18.10.2016, 17:10  [ТС] 3
это просто гениально - перебирать эти списки с конца!
0
Эксперт Python
5407 / 3831 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
19.10.2016, 17:11 4
...удаляет из списка наибольшую из двух, если строки равны, удаляет обе.
Python
1
2
3
4
5
6
7
8
9
10
11
for lv_a,lv_b in zip(la.copy(),lb.copy()):
    if len(lv_a)>len(lv_b):
        la.remove(lv_a)
    elif len(lv_b)>len(lv_a):
        lb.remove(lv_b)
    else:
        la.remove(lv_a)
        lb.remove(lv_b)
 
print(la)   #[]
print(lb)   #['cat', 'dog', 'duck', 'rabbit']
1
12 / 12 / 10
Регистрация: 17.06.2016
Сообщений: 70
23.10.2016, 21:55 5
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
zv1 = ['bear', 'tiger', 'wolf', 'whale', 'elephant']
zv2 = ['swan', 'cat', 'dogs', 'duck', 'rabbit']
for i in range(len(zv1)-1,-1,-1):
    if len(zv1[i])==len(zv2[i]):
               del zv1[i] 
               del zv2[i]
 
    elif len(zv1[i])>len(zv2[i]):
               del zv1[i]
    else:
               del zv2[i]
    
print(zv1)
print(zv2)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2016, 21:55
Помогаю со студенческими работами здесь

Списки
1. Пусть журнал по предмету «Информационные технологии» представлен в виде списка: my_len = ],],]]....

Списки List
Здравствуйте, форумчанин. Недавно я освоил python. Было все проще и понятно. Но мне дали 3 вопроса:...

Задачи на списки
Задача A Заполнить список из шести элементов произвольными целочисленными значениями. Вывести...

Списки серии
Дано целое число K (&gt; 0) и целочисленный массив размера N. Поменять местами последнюю серию...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru