鱼C论坛

 找回密码
 立即注册
查看: 2783|回复: 9

[已解决]如何判断一个列表的元素是否都是列表?

[复制链接]
发表于 2021-5-1 13:36:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

我的想法是用for提取列表中每一个元素,再挨个用list函数判断是不是列表,如果全是列表就输出"Yes",如果不是就输出"No"
但在写的时候发现一个问题:for循环每次执行的语句是一样的,也就是说,for循环结束后,保存下来的只有最后一次的信息。因此,只要输入列表的最后一项是一个列表,那么它就可以“蒙混过关”
希望能有一些新思路
最佳答案
2021-5-1 15:01:34
如果只是判断是否都是
那么你可以找到不是的时候就直接break
输出NO就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-1 15:51:13 | 显示全部楼层
本帖最后由 DrWhiter 于 2021-5-2 09:05 编辑

差不多写好了,放上来给大家参考一下
x = [[1,2,3],[4,5,6],[7,8,9]]
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”)
欲见完整版,请点击这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-1 17:18:44 | 显示全部楼层
本帖最后由 DrWhiter 于 2021-5-3 06:27 编辑

写好了,放出来给大家参考一下
x = [[1,2,3],[4,5,6],[7,8,9]]
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")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 13:46:40 | 显示全部楼层
flag = True
for i in list:
    if i not is list:
        flag = Flase
        break

根据flag来输出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 13:48:56 | 显示全部楼层
def islst(s):
    for x in s:
        if type(x)!=list:
            return False
    return True        

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

print(islst(a))
print(islst(b))
print(islst(c))
print(islst(d))
print(islst(e))
print(islst(f))
print(islst(g))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 13:52:09 | 显示全部楼层
我这个代码  空列表 也算了,你要是不算 需要修改一下代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 15:01:34 | 显示全部楼层    本楼为最佳答案   
如果只是判断是否都是
那么你可以找到不是的时候就直接break
输出NO就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 15:05:06 | 显示全部楼层
我试图用一行代码实现。。
ls = [[], [1, 2], 'a', ['a', 'b']]
print(len(set(list(map(type, ls)))) == 1 and type(ls[0]) is list)

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

今天重新学了map方法,就用上了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 15:46:11 | 显示全部楼层
阿奇_o 发表于 2021-5-1 15:05
我试图用一行代码实现。。

为什么不用all(map(...))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 22:21:16 | 显示全部楼层
kogawananari 发表于 2021-5-1 15:46
为什么不用all(map(...))

高!我没有用过all(),刚刚查了一下才知道,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 00:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表