2 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
您正在循環(huán),not list == 'X'然后進(jìn)行測(cè)試not range(2, 4) == 'X';顯然,兩者都不相等,因此您要打印兩次。但是,您的邏輯可以大大簡(jiǎn)化。如果目標(biāo)是查看索引2、3和4是否相等,則只需將列表的該片轉(zhuǎn)換為aset并檢查長(zhǎng)度是否為1:
mylist = ['X', 'Y', 'X', 'X', 'X', 'Y'] # Changed list name; naming the list "list" leads to tears
if len(set(mylist[2:5])) == 1:
print("2, 3 and 4 equal")
else:
print("At least one not equal to the others")
您可能還希望檢查其mylist長(zhǎng)度是否足夠長(zhǎng)(如果切片未獲得預(yù)期的三個(gè)元素,切片將不會(huì)引發(fā)錯(cuò)誤),因?yàn)檫@樣編寫(xiě)只能測(cè)試列表的長(zhǎng)度至少為3個(gè)元素以及索引2中的任何元素如果存在,則4等于。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
我敢肯定有更優(yōu)雅的方法可以做到這一點(diǎn),但是您可以嘗試:
def check_same(mylist, start_index, end_index):
value = mylist[start_index]
for element in mylist[start_index + 1 : end_index]:
if not element == value:
return False
return True
添加回答
舉報(bào)