如何判断一个列表的元素是否都是列表?
本帖最后由 DrWhiter 于 2021-5-2 14:16 编辑我的想法是用for提取列表中每一个元素,再挨个用list函数判断是不是列表,如果全是列表就输出"Yes",如果不是就输出"No"
但在写的时候发现一个问题:for循环每次执行的语句是一样的,也就是说,for循环结束后,保存下来的只有最后一次的信息。因此,只要输入列表的最后一项是一个列表,那么它就可以“蒙混过关”
希望能有一些新思路 本帖最后由 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-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")
flag = True
for i in list:
if i not is list:
flag = Flase
break
根据flag来输出结果 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)) 我这个代码空列表 也算了,你要是不算 需要修改一下代码 如果只是判断是否都是
那么你可以找到不是的时候就直接break
输出NO就好了 我试图用一行代码实现。。
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:}
阿奇_o 发表于 2021-5-1 15:05
我试图用一行代码实现。。
为什么不用all(map(...)){:10_327:} kogawananari 发表于 2021-5-1 15:46
为什么不用all(map(...))
高!我没有用过all(),刚刚查了一下才知道,感谢!
页:
[1]