DrWhiter 发表于 2021-5-1 13:36:18

如何判断一个列表的元素是否都是列表?

本帖最后由 DrWhiter 于 2021-5-2 14:16 编辑

我的想法是用for提取列表中每一个元素,再挨个用list函数判断是不是列表,如果全是列表就输出"Yes",如果不是就输出"No"
但在写的时候发现一个问题:for循环每次执行的语句是一样的,也就是说,for循环结束后,保存下来的只有最后一次的信息。因此,只要输入列表的最后一项是一个列表,那么它就可以“蒙混过关”
希望能有一些新思路

DrWhiter 发表于 2021-5-1 15:51:13

本帖最后由 DrWhiter 于 2021-5-2 09:05 编辑

差不多写好了,放上来给大家参考一下
x = [,,]
for n in x:
    type(n)
    if bool(isinstance(n,list)):
      k=5
    else:
      k = 3
      break
if k != 5:
   print("No")
else:
      print(“Yes”)
欲见完整版,请点击这里

DrWhiter 发表于 2021-5-1 17:18:44

本帖最后由 DrWhiter 于 2021-5-3 06:27 编辑

写好了,放出来给大家参考一下x = [,,]
for n in x:
    type(n)
    if bool(isinstance(n,list)):
      k=5
    else:
      k = 3
      break
if k != 5:
   print("No")
else:
   print("Yes")

Stubborn 发表于 2021-5-1 13:46:40

flag = True
for i in list:
    if i not is list:
      flag = Flase
      break

根据flag来输出结果

wp231957 发表于 2021-5-1 13:48:56

def islst(s):
    for x in s:
      if type(x)!=list:
            return False
    return True      

a=,,6]   
b=,,4],6]   
c=   
d=[]
e=
f=[]
g=[[]*5]

print(islst(a))
print(islst(b))
print(islst(c))
print(islst(d))
print(islst(e))
print(islst(f))
print(islst(g))

wp231957 发表于 2021-5-1 13:52:09

我这个代码空列表 也算了,你要是不算 需要修改一下代码

yuedong 发表于 2021-5-1 15:01:34

如果只是判断是否都是
那么你可以找到不是的时候就直接break
输出NO就好了

阿奇_o 发表于 2021-5-1 15:05:06

我试图用一行代码实现。。
ls = [[], , 'a', ['a', 'b']]
print(len(set(list(map(type, ls)))) == 1 and type(ls) is list)

#注:只是判断ls里面的第一层是否为列表。若 ls=[] 将判为False;若 ls=[ [] ] 将判为 True。

今天重新学了map方法,就用上了。。{:10_297:}

kogawananari 发表于 2021-5-1 15:46:11

阿奇_o 发表于 2021-5-1 15:05
我试图用一行代码实现。。




为什么不用all(map(...)){:10_327:}

阿奇_o 发表于 2021-5-1 22:21:16

kogawananari 发表于 2021-5-1 15:46
为什么不用all(map(...))

高!我没有用过all(),刚刚查了一下才知道,感谢!
页: [1]
查看完整版本: 如何判断一个列表的元素是否都是列表?