Найти - Пользователи
Полная версия: Задача со списками.
Начало » Центр помощи » Задача со списками.
1
SafeNuts
Всем привет)
Требуется помощь в написании программы)
Вот условие:
“Даны два неубывающих списка x и y. Найти их пересечение, то есть неубывающий список z, содержащий их общие элементы, причем кратность каждого элемента в списке z равна минимуму его кратностей в списках x и y.”
Не использовать функции для списков.
terabayt
SafeNuts
причем кратность каждого элемента в списке z равна минимуму его кратностей в списках x и y.”
не понял, можно пример?
SafeNuts
terabayt
Да, конечно)
То есть если в одном из списков общие элементы встречаются разное количество раз то нужно в z поместить меньшее количество раз этот элемент)
botinag
не уверен, что верно понял задание…
list1 = ['a', 'a', 'b', 'b', 'c', 'd']
list2 = ['a', 'b', 'b', 'e', 'f', 'b']
def blah(list1, list2):
    list3 = []
    for x in set(list1):
        if x in list2:
            x_min = min(list1.count(x), list2.count(x))
            for i in range(x_min):
                list3.append(x)
    return list3
>>> blah(list1, list2)
['a', 'b', 'b']
terabayt
list1 = ['a', 'a', 'b', 'b', 'c', 'd']
list2 = ['a', 'b', 'b', 'e', 'f', 'b']
a = []
for j in (i for i in set(list1) if i in list2):
    a += j*min(list1.count(j), list2.count(j))
print a #['a', 'b', 'b']
SafeNuts
terabayt
botinag
Огромное спасибо)
Есть только одна проблема, нужны эти функции но без использования строеных функций списков(Только что сам об этом узнал(Прошу прощения(
terabayt
for j in (i for i in list1 if i in list2):
    if a.count(j) < list2.count(j):
        a += j
функции не используются, но используются методы (count)
terabayt
а вот и без встроенных методов
def count(a, s):
    return len([i for i in a if i == s])
a = []
for j in (i for i in list1 if i in list2):
    if count(a, j) < count(list2, j):
        a += j
print a # ['a', 'b', 'b']
или так
def count(a, s):
    return len([i for i in a if i == s])
a = []
[a.append(j) if count(a, j) < count(list2, j) else [] for j in (i for i in list1 if i in list2)]
print a # ['a', 'b', 'b']
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