例えば。
l1 = [a,b,c,d]
l2 = [e,b,f,g]
bがl1とl2の両方にあり、両方のリストの[1]の位置にあることを確認したときにtrueを返すメソッド。リスト内のすべてのアイテムを比較できるように、forループで使用できるものが望ましいです。
どうもありがとう :)
例えば。
l1 = [a,b,c,d]
l2 = [e,b,f,g]
bがl1とl2の両方にあり、両方のリストの[1]の位置にあることを確認したときにtrueを返すメソッド。リスト内のすべてのアイテムを比較できるように、forループで使用できるものが望ましいです。
どうもありがとう :)
このコードを試してください:
if 'b' in l1 and 'b' in l2: # Separated both statements to prevent ValueErrors
if l1.index('b') == l2.index('b'):
print 'b is in both lists and same position!'
Volatilityのコードとは異なり、どちらのリストの長さも重要ではありません。
index()関数は、文字列内の要素の位置を取得します。たとえば、次の場合:
>>> mylist = ['hai', 'hello', 'hey']
>>> print mylist.index('hello')
1
できるよ:
def has_equal_element(list1, list2):
return any(e1 == e2 for e1, e2 in zip(list1, list2))
この関数はTrue
、少なくとも1つの要素が他のリストと同じ値と位置にある場合に返されます。この関数は、リストの長さが異なる場合にも機能します。それが望ましくない場合は、関数を調整する必要があります。
zip
リストが同じ長さであると仮定すると、関数を使用できます
for i, j in zip(l1, l2):
if i == j:
print '{0} and {1} are equal and in the same position'.format(i, j)
zip
関数が行うことは次のようなものです:
l1 = [1, 2, 3]
l2 = [2, 3, 4]
print zip(l1, l2)
# [(1, 2), (2, 3), (3, 4)]
True
入力を返すまたは与えられる関数が必要な場合はFalse
、これを行うことができます
def some_func(your_input, l1, l2):
return (your_input,)*2 in zip(l1, l2)
(your_input,)
はを含む1タプルyour_input
であり、これに2を掛けると、(your_input, your_input)
テストしたいものになります。
True
または、条件を満たしている場合は返品が必要な場合
def some_func(l1, l2):
return any(i == j for i, j in zip(l1, l2))
このany
関数は基本的に、リストの要素(この場合はジェネレーター)のいずれかがTrue
ブールコンテキストにあるかどうかをチェックするため、この場合、2つのリストが条件を満たしている場合はtrueを返します。
2つのリストの1つの位置を比較する方法が実際に必要な場合は、次を使用できます。
def compare_pos(l1, l2, pos):
try:
return l1[pos] == l2[pos]
except IndexError:
return False
l1 = [0, 1, 2, 3]
l2 = [0, 2, 2, 4]
for i, _ in enumerate(l1):
print i, compare_pos(l1, l2, i)
# Output:
# 0 True
# 1 False
# 2 True
# 3 False
2つのリストの同じ要素がすべて同じ位置にあるかどうかをテストする場合は、等しいかどうかを確認できます。
print l1 == l2
両方のリストから共通の要素を取得します。
l1 = [a, b, c, d]
l2 = [e, b, f, g]
common_elements = [(i, v) for i,v in enumerate(l1) if l2[i] == v]
これにより、タプルのリストが作成されます。(index, value)
次に、目的の値またはインデックスがリストに含まれているかどうかを確認できます。