如果用户列表中的所有元素都是列表,则返回True

时间:2019-07-25 23:56:47

标签: python python-3.x list isinstance

已解决

我的练习是编写一个名为list_check的函数,该函数接受用户的列表,如果用户列表中的每个元素本身也是一个列表,则返回True。

最重要的是,我想看到一个使用用户输入解决此问题的有效示例,这比仅自己提供列表要困难得多。

这是我最近一次接受用户输入的列表:

userlist = []
number_of_elements = int(input("Enter the number of elements in your list: "))

for i in range(0, number_of_elements):
    element = input().split()
    userlist.append(element)

if all(isinstance(element, list) for element in userlist):
    print("True")
else:
    print("False")

没有用户输入的工作代码如下:

customlist = [[1,2,3],[2,3,4], False]

def list_check(customlist):
    answer = all(type(l) == list for l in customlist)
    print(answer)

list_check(customlist)

错误

感谢帮助。 -J

2 个答案:

答案 0 :(得分:0)

def listcheck():
    y = (input("Enter your lists: \n"))
    if y[0] !="[" or y[1] !="[":
        print("false, you entered data not starting with [[")
        return False
    if y[len(y)-1] !="]" or y[len(y)-2] !="]":
        print("false, you entered data not ending with ]]")
        return False
    import ast
    z = ast.literal_eval(y)
    def innerlistcheck(alist):
        for x in range(0, len(alist), 1):
            if type(alist[x]) != list:
                print("false, " + str(alist[x]) + " is not a list")
                return False
        print("true")
        return True
    innerlistcheck(z)

listcheck()

我认为这可能是您的问题的答案。 最困难的部分是查看如何将字符串转换为我从此处窃取的列表:Convert string representation of list to list

答案 1 :(得分:-1)

这是因为.split()将始终返回列表。 'dog'.split()== ['dog']。

解决方案(优化)

number_of_elements = int(input("Enter the number of elements in your list: "))

output = True
for _ in range(number_of_elements):
    element = input().split()
    if len(element) == 1: output = False

print(output)