這兩個元的部分的值是一個簡單的代碼,我有:比較在python
a=(6,3,4,5)
b=(1,2,1,3)
if (a[i]<b[i+1] for i in range(1,3)):
print("Yes")
else:
print("No")
什麼,我試圖做的是 打印是如果[1] < B [2]和[ 2] < a [3],否則返回No.
此代碼始終返回是。有關如何修改這個的任何提示?
這兩個元的部分的值是一個簡單的代碼,我有:比較在python
a=(6,3,4,5)
b=(1,2,1,3)
if (a[i]<b[i+1] for i in range(1,3)):
print("Yes")
else:
print("No")
什麼,我試圖做的是 打印是如果[1] < B [2]和[ 2] < a [3],否則返回No.
此代碼始終返回是。有關如何修改這個的任何提示?
您可以使用reduce
積累的結果:
def test(a, b):
return "Yes" if (reduce(lambda i, j: a[i]<b[j], range(1,3))) else "No"
a=(6,3,4,5)
b=(1,2,1,3)
print test(a, b) # "No"
a=(0,0,0,0)
print test(a, b) # "Yes"
一種方法是使用zip()
,這就像一個拉鍊 - 給它兩個序列,它網格它們在一起,給出每個的第一個元素,每個的第二個元素等:
>>> a=(6,3,4,5)
>>> b=(1,2,1,3)
>>> list(zip(a,b))
[(6, 1), (3, 2), (4, 1), (5, 3)]
然後,你可以切片,與你所感興趣的那些:
>>> zip(a,b)[1:3]
[(3, 2), (4, 1)]
然後測試那些在一個循環:
for an, bn in zip(a, b)[1:3]:
if an < bn:
???
並使用Python's for/else
loop thing來處理跟蹤所有的人,而只有打印輸出一旦。一旦出錯,打印失敗,如果打印結束並且沒有錯,則打印是。
for an, bn in zip(a, b)[1:3]:
if an > bn:
print("No")
break
else:
print("Yes")
謝謝。但是通過這種方式,你可以將一個元組的第i個元素與另一個元素的第i個元素進行比較。我有興趣將一個元素的第i個元素與另一個元素的第(i + 1)個元素進行比較。 – NNsr
我更喜歡@ nneonneo的回答,我在寫我的時候沒有看到它。但在我的回答中,沒有理由需要'zip(a,b)',你可以'zip(a,b [1:])'來獲得偏移量。 – TessellatingHeckler
您的句子「我是... a [1]」未完成? – ycsun
我修好了。謝謝。 – NNsr
您是不是指'a [1]