我需要創建一個算法,它將讀取列表A
和B
的用戶輸入,並確定列表B
中的元素是否出現在列表A
中(如果它們發生,程序需要打印'是',否則'打印')。如何找到發生在另一個列表中的任意列表中的元素(保留其順序)?
我想出了下面的代碼應該可以是一個起點:
n=int(input('Enter the length of list A '))
A=[]
for i in range (0,n):
InpEl=int(input('Enter the elements '))
A.append(InpEl)
print(A)
n=int(input('Enter the length of list B '))
B=[]
for i in range (0,n):
InpEl2=int(input('Enter the elements '))
B.append(InpEl2)
print(B)
checklist=B
for each in A:
if each in checklist:
print('YES')
else:
print('NO')
雖然在任何情況下,我得到「不」。這裏有什麼錯誤?
而且,以後我可能需要修改列表,以便使程序能夠確定的B
元素出現在它們出現在B
順序A
,但不一定連續。
For example, let M be the length of B and N be the length of A.
Then the program should return yes if there are indices i0, i1...im+1 such that 0<= i0 < i1...< im-1 < N such that A[i0] = B[0];A[i1] = B[1]...A[im-1] =
B[m-1].
有沒有更簡單的方法來構建滿足這種請求的循環?
P.S .:是否有可能讓用戶輸入的內容不僅是整數,而且是字符串?我不確定raw_input
在Python 3.5中是否有用。
P.S.S: 對不起,我在這裏輸入了代碼時犯了一個小錯誤,現在我修好了。 另一個問題:我得到的多是,沒有對每個元素的輸出:
Enter the length of list A 3
Enter the elements 1
Enter the elements 2
Enter the elements 3
[1, 2, 3]
Enter the length of list B 3
Enter the elements 5
Enter the elements 4
Enter the elements 3
[5, 4, 3]
NO
NO
YES
如何修改代碼,以便將只打印yes和no只有一次任意occurencies的情況下發生的呢?
'checklist = B' not'[B]' – tihom
*「讓用戶輸入的內容不僅僅是整數,而是字符串?」 - 什麼?您明確地將字符串轉換爲整數。也許......不? – jonrsharpe
'checklist = [B]'在名爲'checklist'的新列表(它將只包含**一個**元素,整個'B'列表)中使'B'成爲嵌套列表。 – martineau