繁体   English   中英

解析python平面和嵌套列表/元组

[英]parsing python flat and nested lists/tuples

我试图解析形式的元组:

a=(1,2)

要么

b=((1,2), (3,4)...)

对于一个案例,代码将是:

x, y = a

和b将是:

for element in b:
    x, y = element

是否有一种快速,干净的方式来接受两种形式? 这是在MIDI接收回调中(x是要运行的函数的指针,y是要传递到灯光的强度数据)。

# If your input is in in_seq...
if hasattr(in_seq[0], "__iter__"):
    # b case
else:
    # a case

这基本上检查输入序列的第一个元素是否可迭代。 如果是,那么这是您的第二种情况(因为元组是可迭代的),如果不是,那么这是您的第一种情况。

如果您确定输入将是元组,则可以改用:

if isinstance(in_seq[0], tuple):
    # b case
else:
    # a case

根据您要执行的操作,处理'a'情况可能很简单,例如将单个元组捆绑在较大的元组中,然后在其上调用与'b'情况相同的代码。

b_case = (a_case,)

编辑:正如评论中指出的,一个更好的版本可能是...

from collections import Iterable
if isinstance(in_seq[0], Iterable):
    # ...

正确的方法是:

a = ((1,2),) # note the difference
b = ((1,2), (3,4), ...)

for pointer, intensity in a:
   pass # here you do what you want

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM