>>> A = [1, 0, 1, 1] >>> B = [1, 1, 1, 1] >>> C = [1, 0, 1, 0] >>> [len(set(i)) == 1 for i in zip(A, B, C) ] [True, False, True, False] >>> sum(len(set(i)) == 1 for i in zip(A, B, C)) 2
sum(1
if x == y == z
else 0
for x, y, z in zip(A, B, C))
2
Using set
, as in gnibbler's answer, works for lists containing any kinds of immutable elements -- arbitrary integers, floats, strings, tuples. OP's question doesn't impose any restrictions on what the lists may contain, and assuming only 0 and 1 doesn't simplify anything. The following also works for an arbitrary number of lists, not just 3, which does seem to be part of OP's requirements.
A = [1, 0, 1, 1, 'cat', 4.5, 'no'] B = [1, 1, 1, 1, 'cat', False, 'no'] C = [1, 0, 1, 0, 16, 'John', 'no'] D = [1, 0, 0, 0, (4, 3), 'Sally', 'no'] def number_of_matching_positions( * lists): "" " Given lists, a list of lists whose members are all of the same length, return the number of positions where all items in member lists are equal. "" " return sum([len(set(t)) <= 1 for t in zip( * lists) ]) print(number_of_matching_positions(), number_of_matching_positions(A), number_of_matching_positions(A, A), number_of_matching_positions(A, B), number_of_matching_positions(A, B, C), number_of_matching_positions(A, B, C, D))
If the number of lists N
can be large, performance can be improved by examining as few elements as possible of each tuple from the zip:
def all_equal(t): "" "Return True if all elements of the sequence t are equal, False otherwise." "" # Use a generator comprehension, # so that 'all' will stop checking t[i] == t[0] # as soon as it 's false for some i. return (not t) or\ all((t[i] == t[0] for i in range(1, len(t)))) def number_of_matching_positions_alt( * lists): # Instead of 'len(set(t)) <= 1', # do less work in case len(lists) alias len(t) can be large return sum([all_equal(t) for t in zip( * lists)])
If you want to know the positions where all the lists are matching then
list(x for x, (xa, xb, xc) in enumerate(zip(a, b, c)) if xa == xb == xc)
If you want to just count the number of columns instead
sum(xa == xb == xc for xa, xb, xc in zip(a, b, c))
1 day ago Below are the six different methods used to compare two lists of a column in Excel for matches and differences. Method 1: Compare Two Lists Using Equal Sign Operator. Method 2: Match Data by Using Row Difference Technique. Method 3: … ,I have N number of list of same length. How can I compare these lists in corresponding position and output the number of positions where they all match?, › Correct the classpath of your application so that it contains a single compatible version of orgaxonframeworkeventsourcingeventstorejpa , › Overflowerror python int too large to convert to c long torchtextdatasetstext classificationdatasets39ag news39
A = [1, 0, 1, 1] B = [1, 1, 1, 1] C = [1, 0, 1, 0]
>>> A = [1, 0, 1, 1] >>> B = [1, 1, 1, 1] >>> C = [1, 0, 1, 0] >>> [len(set(i)) == 1 for i in zip(A, B, C) ][True, False, True, False] >>> sum(len(set(i)) == 1 for i in zip(A, B, C)) 2
#
function to compare lists def compare(l1, l2): # here l1 and l2 must be listsif len(l1) != len(l2): return Falsel1.sort() l2.sort() if l1 == l2: return Trueelse: return False list1 = [1, 2, 3, 4] list2 = [1, 4, 3, 2] list3 = [2, 3, 4, 5] print("list1 is:", list1) print("list2 is:", list2) print("list3 is:", list3) # comparing list1 and list 2 print("list1 and list2 contain same elements:", compare(list1, list2)) #comparing list2 and list3 print("list1 and list3 contain same elements:", compare(list1, list3))
list1 is: [1, 2, 3, 4] list2 is: [1, 4, 3, 2] list3 is: [2, 3, 4, 5] list1 and list2 contain same elements: True list1 and list3 contain same elements: False
list1 is: [1, 2, 3, 4] list2 is: [1, 4, 3, 2] list3 is: [2, 3, 4, 5] list1 and list2 contain same elements: True list1 and list3 contain same elements: False
#
function to compare lists def compare(l1, l2): # here l1 and l2 must be listsif len(l1) != len(l2): return Falseset1 = set(l1) set2 = set(l2) if set1 == set2: return Trueelse: return False list1 = [1, 2, 3, 4] list2 = [1, 4, 3, 2] list3 = [2, 3, 4, 5] print("list1 is:", list1) print("list2 is:", list2) print("list3 is:", list3) # comparing list1 and list 2 print("list1 and list2 contain same elements:", compare(list1, list2)) # comparing list2 and list3 print("list1 and list3 contain same elements:", compare(list1, list3))
The methods of comparing two lists are given below.,In this section, we have covered various methods of comparing two lists in Python. ,Python Design Patterns,The Python cmp() function compares the two Python objects and returns the integer values -1, 0, 1 according to the comparison.
The list1 and list2 are equal
The list1 and list3 are not the same The list1 and list2 are not the same
The lists list1 and list2 are not the same The lists list1 and list3 are the same
The list1 and list2 are not the same The list1 and list3 are the same
Apart from the methods discussed above, you can use collection.Counter(), reduce(), map() and using sum(), zip() and len() methods together; to compare two lists in Python. ,There are different ways to compare lists in Python. But it depends on the outcome required. Two of the most popular methods are set() and cmp().,The cmp() function is a built-in method in Python used to compare the elements of two lists. The function is also used to compare two elements and return a value based on the arguments passed. This value can be 1, 0 or -1.,In this article, we will understand how to compare two lists in Python.
1) Initializing List and Convert into Set Object
# initializing list and convert into set object n = set(['n1', 'n4', 'n3', 'n2']) #Add new Element in set n n.add('n5'); print("Output with set Function : ") print(n)
Output with set Function: {
'n5',
'n4',
'n1',
'n2',
'n3'
}
At first, we convert a list into the set by using a set() function, now we need to check if both the lists are equal or not by using if operator.
# Python 3 code # check if list are equal # using set() # initializing list and convert into set object x = set(['x1', 'rr', 'x3', 'e4']) y = set(['x1', 'rr', 'e4', 'x3']) print("List first: " + str(x)) print("List second: " + str(y)) # check if list x equals to y if x == y: print("First and Second list are Equal") else: print("First and Second list are Not Equal")
In the following example, we first convert a list into the set by using set() function then we need to differentiate between these two sets by using difference() function and use the if() condition to check the return value.
# Python 3 code # check if list are equal # using set() & difference() # initializing list and convert into set object x = set(['x1', 'rr', 'x3', 'y4']) y = set(['x1', 'rr', 'rr', 'y4']) print("List first: " + str(x)) print("List second: " + str(y)) # take difference of two lists z = x.difference(y) print("Difference of first and second String: " + str(z)) # if lists are equal if not z: print("First and Second list are Equal") # if lists are not equal else: print("First and Second list are Not Equal")
List first: {
'y4',
'x3',
'rr',
'x1'
}
List second: {
'y4',
'rr',
'x1'
}
Difference of first and second String: {
'x3'
}
First and Second list are Not Equal
Short answer: The most Pythonic way to check if two ordered lists l1 and l2 are identical, is to use the l1 == l2 operator for element-wise comparison. If all elements are equal and the length of the lists are the same, the return value is True. ,Short answer: The most Pythonic way to compute the difference between two lists l1 and l2 is the list comprehension statement [x for x in l1 if x not in set(l2)]. This works even if you have duplicate list entries, it maintains the original list ordering, and it’s efficient due to the constant runtime complexity of the set membership operation.,You can use list comprehension to go over all elements in the first list but ignore them if they are in the second list:,Let’s discuss the most Pythonic ways of accomplishing these problems. We start with five ways to perform the Boolean comparison and look at five ways to perform the simple difference, next.
Example: You start with two lists.
l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # 1. Boolean Comparison result = False # 2. Difference result = [4, 5]
Examples:
l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3] # compare(l1, l2) -- > False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 5, 4] # compare(l1, l2) -- > False l1 = [1, 2, 3, 4, 5] l2 = [1, 2, 3, 4, 5] # compare(l1, l2) -- > True
Not always is the simplest method the best one. But for this particular problem, it is! The equality operator ==
compares a list element-wise—many Python coders don’t know this!
# 1. Simple Comparison
def method_1(l1, l2):
return l1 == l2
l1 = [1, 2, 3, 4, 5]
l2 = [1, 2, 3]
print(method_1(l1, l2))
# False
Let’s see how you can use the function to make the previous code more concise:
# 3. Zip + For Loop
def method_3(l1, l2):
for x, y in zip(l1, l2):
if x != y:
return False
return len(l1) == len(l2)
l1 = [1, 2, 3, 4, 5]
l2 = [1, 2, 3]
print(method_3(l1, l2))
# False
- You first create an iterable of Boolean values using the generator expression
x == y for x, y in zip(l1, l2)
. - Then, you sum up over the Boolean values (another trick of pro coders) to find the number of elements that are the same and store it in variable
num_equal
. - Finally, you compare this with the length of both lists. If all three values are the same, both lists have the same elements and their length is the same, too. They are equal!
# 4. Sum + Zip + Len
def method_4(l1, l2):
num_equal = sum(x == y
for x, y in zip(l1, l2))
return num_equal == len(l1) == len(l2)
l1 = [1, 2, 3, 4, 5]
l2 = [1, 2, 3]
print(method_4(l1, l2))
# False
print(method_4([1, 2], [1, 2]))
# True
My problem here is that I can't seem to anycodings_python-3.x understand how to compare two lists of anycodings_python-3.x lists. I have this (I'm using 4x4 until all anycodings_python-3.x the tests are ok):,Returns true if the two lists are anycodings_python-3.x equal. If you are interested in knowing anycodings_python-3.x the indices of the correct values,How to display only the number of lines that contain a string pattern in csv file using grep without showing the content of the line?,In detail: with this line of code you anycodings_python-3.x find the matrix with 'True' in the anycodings_python-3.x positions where the lists have the same anycodings_python-3.x elements:
My problem here is that I can't seem to anycodings_python-3.x understand how to compare two lists of anycodings_python-3.x lists. I have this (I'm using 4x4 until all anycodings_python-3.x the tests are ok):
sudoComplete = [ [1, 2, 3, 4], [3, 4, 2, 1], [4, 3, 1, 2], [2, 1, 4, 3] ] sudoIncomp = [ [0, 2, 3, 0], [3, 0, 0, 1], [4, 0, 0, 2], [0, 1, 4, 0] ]
What I want to do is what I did on my C code anycodings_python-3.x (or something similar):
int compareSudo(int sudoResuelto[4][4], int sudoTerminado[4][4]) {
int state;
int i = 0, j = 0;
for (; i < 4; i++) {
for (; j < 4; j++) {
if (sudoComplete[i][j] == sudoIncomp[i][j]) {
state = 1;
} else {
state = 0;
break;
}
}
j = 0;
if (state == 0) {
break;
}
}
return state;
}
If I understand task, than you just need anycodings_python-3.x to check equality of lists:
result = list1 == list2
If I understand the question correctly, anycodings_python-3.x you want to check that the matrices are anycodings_python-3.x equal in all positions where the second anycodings_python-3.x one is non-zero. This function should do anycodings_python-3.x it (however, it assumes and does not anycodings_python-3.x check that the two inputs have the same anycodings_python-3.x dimensions):
def compareSudo(full, partial):
for i in range(0, len(partial)):
for j in range(0, len(partial[i])):
if partial[i][j] != 0 and partial[i][j] != full[i][j]:
return False
return True
sudoComplete == sudoComplete
Returns true if the two lists are anycodings_python-3.x equal. If you are interested in knowing anycodings_python-3.x the indices of the correct values
np.where(np.array(sudoComplete) == np.array(sudoIncomp))
In detail: with this line of code you anycodings_python-3.x find the matrix with 'True' in the anycodings_python-3.x positions where the lists have the same anycodings_python-3.x elements:
np.array(sudoComplete) == np.array(sudoIncomp)
Last Updated : 28 Jul, 2022
Examples:
Input: list = [10, 20, 30, 40, 50]
given value = 20
Output: No
Input: list = [10, 20, 30, 40, 50]
given value = 5
Output: Yes
Yes No
Yes No