如何将Python列表按长度2拆分为由二元组组成的新列表
DynamoBIM Python实现列表两两分组方案
核心需求
将一维数值列表按每2个元素为一组,拼接为「外层列表、内层元组」的格式,示例转换效果:
原列表:[123.45, 32.89, 234.90, 234.96, 56.94, 71.21]
目标结果:[(123.45, 32.89), (234.90, 234.96), (56.94, 71.21)]
可直接复用的代码
你可以直接把以下代码复制到DynamoBIM的Python节点中使用:
# 方式1:逻辑直白易修改,适合非专业开发者调整 # 如果是从Dynamo节点传入列表,把下面的input_list赋值改为 input_list = IN[0] 即可 input_list = [123.45, 32.89, 234.90, 234.96, 56.94, 71.21] output_list = [] # 步长为2遍历原列表,每次取2个元素组成元组 for index in range(0, len(input_list), 2): output_list.append( (input_list[index], input_list[index+1]) ) # Dynamo节点输出结果 OUT = output_list
如果需要更简洁的写法,也可以用列表推导式实现:
input_list = [123.45, 32.89, 234.90, 234.96, 56.94, 71.21] output_list = [(input_list[i], input_list[i+1]) for i in range(0, len(input_list), 2)] OUT = output_list
注意事项
- 确保原列表长度为偶数即可正常运行,若存在列表长度为奇数的场景,可将
append行替换为output_list.append(tuple(input_list[index:index+2])),最后不足2个的元素会生成单元素元组,不会报错 - 若后续需要调整为每N个元素一组,仅需修改
range中的步长参数,同时对应增加元组内的取值位置即可
内容的提问来源于stack exchange,提问作者sjmurphy84
相关产品推荐
相关产品推荐

