Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
natasha_la
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 4
#1

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

18.10.2016, 11:48. Просмотров 493. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2016, 11:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Списки, списки, списки. не все так просто (Python):

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

Даны списки чисел, нужно вывести список всех возможных комбинаций чисел, составляющих эти списки - Python
Даны списки чисел, нужно вывести список всех возможных комбинаций чисел, составляющих эти списки (элемент из списка 1, элемент из списка 2...

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

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

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

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

4
vint-81
охотник
1005 / 529 / 355
Регистрация: 29.09.2014
Сообщений: 1,083
18.10.2016, 14:28 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
natasha_la
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 4
18.10.2016, 17:10  [ТС] #3
это просто гениально - перебирать эти списки с конца!
0
Garry Galler
838 / 610 / 167
Регистрация: 28.10.2013
Сообщений: 1,483
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
Tehnic
11 / 11 / 3
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2016, 21:55
Привет! Вот еще темы с ответами:

Двумерные списки - Python
1. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m. ...

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

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

Python -Списки - Python
Дан целочисленный массив размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
23.10.2016, 21:55
Ответ Создать тему
Опции темы

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