Вот довольно грубый метод, который я придумал. Это, конечно, не самый эффективный, но это что-то.
Проблема, которую я нашел с некоторыми из решений здесь, состоит в том, что либо она не дает повторяющихся элементов, либо не дает правильного количества элементов, когда имеет значение порядок ввода.
#finds common elements
def common(list1, list2):
result = []
intersect = list(set(list1).intersection(list2))
#using the intersection, find the min
count1 = 0
count2 = 0
for i in intersect:
for j in list1:
if i == j:
count1 += 1
for k in list2:
if i == k:
count2 += 1
minCount = min(count2,count1)
count1 = 0
count2 = 0
#append common factor that many times
for j in range(minCount):
result.append(i)
return result
Если var1 и var2 являются переменными, тогда строку фильтра можно указать с помощью команды paste в виде:
usagexts[paste(var1, var2, sep="/")]