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

Returning True if all elements in a user’s list are a list

已解决

我的练习是编写一个名为 list_check 的函数,它接受来自用户的列表,并且 returns 如果用户列表中的每个元素本身也是一个列表,则为真。

最重要的是,我希望看到一个使用用户输入解决此问题的工作示例,这比您自己提供列表更困难。

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

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

那是因为 .split() 总是 return 一个列表。 '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)
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