测试变量是否具有类型“元组列表”

时间:2015-04-26 14:09:28

标签: python

如何检查变量是否为元组列表?

isinstance 仅显示变量是列表还是元组,但我不知道如何检查嵌套结构。

3 个答案:

答案 0 :(得分:6)

您可以结合使用allinstanceof

>>> a = [(1,2),(3,5)]
>>> all(isinstance(item, tuple) for item in a)
True
>>> b = [(1,2),(3,5), "string"]
>>> all(isinstance(item, tuple) for item in b)
False
>>>

答案 1 :(得分:1)

使用all

>>> lit=[(1,),(2,),(3,)]
>>> lin=[(1,),(2,),(3,),4]

>>> all(isinstance(e,tuple) for e in lit)  
True
>>> all(isinstance(e,tuple) for e in lin)  
False

你也可以在过滤器中否定一个lambda来测试和找到不是元组的元素:

>>> filter(lambda e: not isinstance(e, tuple), lit)
[]
>>> filter(lambda e: not isinstance(e, tuple), lin)
[4]

或者使用列表推导来查找非元组的索引:

>>> [i for i, e in enumerate(lit) if not isinstance(e, tuple)]
[]
>>> [i for i, e in enumerate(lin) if not isinstance(e, tuple)]
[3]

如果您使用filter或列表理解,那么空列表也是“错误的”#39;因此,如果您正在寻找不是元组的实际元素,那么它们都可以是测试和结果。

答案 2 :(得分:0)

您必须遍历列表。

@PUT
//path 
@Path("/carte")
//json form
@Produces("application/json; charset=UTF-8")
@PermitAll
public List<Carte> setAllCarte(@FormParam ("nom") String nom , @FormParam("prenom") String prenom , @FormParam("date") Integer date ,
                                 @FormParam("compte") Integer compte);
 //implimante the list with a json data
public List<Carte> setAllCarte(String nom, String prenom, Integer date,
     Integer compte) {
Carte list = new Carte();
list.setNom(nom);
list.setPrenom(prenom);
list.setDate(date);
list.setCompte(compte);

return setAllCarte(nom, prenom, date, compte);