[英]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.