如何从列表的不同元素获取特定输出?

Aar*_*hay 4 python list python-3.x

我想为不属于列表的元素获取特定输出,我希望执行以下功能:我定义了一个list(lst1),然后程序要求用户输入,然后将给定的整数转换为一个列出并将输入与lst1. 如果元素不正确匹配(即使是 1),则程序会打印出特定元素不属于给定列表(示例如下所示):

lst1=[1,2,3]

a=int(input())

b=a.split()
Run Code Online (Sandbox Code Playgroud)

现在例如我输入 234

我希望得到一个输出:

'4' does not belong in lst1
Run Code Online (Sandbox Code Playgroud)

Gio*_*ous 5

以下应该可以解决问题:

lst1=[1,2,3]
a=int(input())

user_input = [int(i) for i in str(a)]

for num in user_input: 
    if num not in lst1:
        raise ValueError(f"{num} does not belong to lst1")
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用set差异:

lst1=[1,2,3]
a=int(input())

user_input = [int(i) for i in str(a)]

if len(set(user_input) - set(lst1)) > 0:
    raise ValueError("...")
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想处理多个用户输入,下面的方法可以解决问题:

lst1=[1,2,3]
a = input().split(' ')

user_input = [int(i) for i in a]

for _input in user_input:
    for num in [int(i) for i in str(_input)]:
        if num not in lst1:
            print(f"{num} does not belong to lst1")
Run Code Online (Sandbox Code Playgroud)

或者

lst1=[1,2,3]
a = input().split(' ')

user_input = [int(i) for i in a]

for _input in user_input:
    num = [int(i) for i in str(_input)]

    diff = set(num) - set(lst1)
    if len(diff) > 0:
        print(f"The following numbers are invalid: {diff}")
Run Code Online (Sandbox Code Playgroud)