我需要创建一个算法来读取列表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
中A
的元素是否按照B
中出现的顺序出现在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].
中,但不一定是连续的。
raw_input
是否有更简单的方法来构建满足此类请求的循环?
P.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
在Python 3.5中是否有用。
P.S.S: 抱歉,我在这里输入代码时犯了一个小错误,我现在修好了。 另一个问题:我得到了每个元素的多个yes'和no的输出:
onStartNestedScroll
我如何修改代码,以便在发生任何事件时只打印一次是,而且只打印一次?
答案 0 :(得分:1)
这是一个解决方案。请记住,之前有很多人提出过这类问题,最佳做法是在询问之前搜索一下。
a = input('enter list A with comma between each element: ')
b = input('enter list B with comma between each element: ')
a = a.split(',')
b = b.split(',')
contained_in_b = [element in b for element in a]
for i, in_b in enumerate(contained_in_b):
print('element {} contained in list B: {}'.format(a[i], in_b))
最好将原始输入全部放在一起,并使用Python将其拆分为列表。这样,用户无需事先给出列表的长度。此外,无需转换为int
- 字符串比较工作正常。
contained_in_b
使用列表推导 - 一种Python的便捷功能,它将布尔element in b
应用于element
中的每个a
。现在您有一个True / False值列表,您可以enumerate
打印出所需的输出。
答案 1 :(得分:0)
你获得的一个武器是所有运算符,它只检查iterable中的所有项都是True:
A = [1, 4, 6, 8, 13]
B = [4, 6, 13, 8]
C = [3, 8, 25]
master = [i for i in range(20)]
print all(i in master for i in A)
print all(i in master for i in B)
print all(i in master for i in C)
输出:
True
True
False
要获得顺序,您还需要回退到迭代方法,通过循环逐步执行第一个列表,同时维护索引以了解您在第二个列表中的位置。对于第一个列表中的每个值,请浏览第二个列表中的 rest ,直到找到项目(临时成功)或点击结束(失败)。
读取数字名称并将它们转换为整数是一个单独的问题,而且代码更长。