我有一個問題是要求比較串列中的 2 個數字,特別是如果相鄰的數字是正數還是負數,但是我被困在問題的第一部分。我的想法是將使用其索引的第一個數字與第二個數字進行比較,因此 i 1,但不可避免地會超出范圍。
我在這里遺漏了一些東西,感謝幫助。
my_list=[-1,2,-3,-4,-5,1,2]
for i in range(len(my_list)):
print (my_list[i])
print (my_list[i 1])
我一直在努力,這是完整的問題
給定一個數字序列,找到并列印第一對具有相同符號的相鄰元素。如果沒有這樣的對,列印 NONE。
zip在這種情況下,我不允許使用。
但是我不能做最后一點,如果沒有對,它會要求 pro print none
s = input()
my_list_str = s.split()
my_list = []
for beta in my_list_str:
my_list.append(int(beta))
for i in range(len(my_list)-1):
if my_list[i]>0 and my_list[i 1] >0:
print (my_list[i], end =' ')
print (my_list[i 1])
break
elif my_list[i]<0 and my_list[i 1] <0:
print (my_list[i], end =' ')
print (my_list[i 1])
break
uj5u.com熱心網友回復:
兩點:
- 大多數情況下,使用索引來迭代串列被認為是“非pythonic”
- 該
for-loop有權選擇密切與else-condition:在代碼else的條件,如果只執行for-loop不是通過左break
因此,您可以嘗試以下操作:
for first, second in zip(my_list[:-1], my_list[1:]):
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
break
else:
print("NONE")
編輯:如果您需要使用索引,那么您可以這樣做:
for i in range(len(my_list) - 1):
first, second = my_list[i], my_list[i 1]
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
break
else:
print("NONE")
如果不允許使用-loop的else-option for,則可以嘗試:
found = False
for i in range(len(my_list) - 1):
first, second = my_list[i], my_list[i 1]
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
found = True
break
if not found:
print("NONE")
uj5u.com熱心網友回復:
因為你想要print (my_list[i 1])
你的串列大小是 7 -> 當 i = 6 -> [i 1] = 7 => my_list[7] <- 超出范圍
uj5u.com熱心網友回復:
你可以像下面這樣做:
my_list=[-1,2,-3,-4,-5,1,2]
list_len = len(my_list)
for i in range(list_len-1):
print(f'comparison {i 1}')
print (my_list[i])
print (my_list[i 1])
uj5u.com熱心網友回復:
my_list=[-1,2,-3,-4,-5,1,2]
list_len = len(my_list)
x = 7 # any positive number
for i in range(x):
if i < list_len:
print (my_list[i])
if i 1 < list_len:
print (my_list[i 1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328996.html
下一篇:減去陣列內的專案
