Форум сайта python.su
Всем привет)
Требуется помощь в написании программы)
Вот условие:
“Даны два неубывающих списка x и y. Найти их пересечение, то есть неубывающий список z, содержащий их общие элементы, причем кратность каждого элемента в списке z равна минимуму его кратностей в списках x и y.”
Не использовать функции для списков.
Отредактировано SafeNuts (Ноя. 12, 2014 21:09:19)
Офлайн
SafeNutsне понял, можно пример?
причем кратность каждого элемента в списке z равна минимуму его кратностей в списках x и y.”
Офлайн
terabayt
Да, конечно)
То есть если в одном из списков общие элементы встречаются разное количество раз то нужно в z поместить меньшее количество раз этот элемент)
Отредактировано SafeNuts (Ноя. 12, 2014 15:41:34)
Офлайн
не уверен, что верно понял задание…
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']
Офлайн
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']
Отредактировано terabayt (Ноя. 12, 2014 20:08:06)
Офлайн
terabayt
botinag
Огромное спасибо)
Есть только одна проблема, нужны эти функции но без использования строеных функций списков(Только что сам об этом узнал(Прошу прощения(
Отредактировано SafeNuts (Ноя. 12, 2014 21:09:37)
Офлайн
for j in (i for i in list1 if i in list2): if a.count(j) < list2.count(j): a += j
Офлайн
а вот и без встроенных методов
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']
Отредактировано terabayt (Ноя. 12, 2014 21:55:59)
Офлайн