所以我有列表给出了花的宽度,高度,x坐标和样式类型。列表如下所示:
list_5 = [[ 43, 440, -120, 'type_D'],
[150, 380, -270, 'type_A'],
[140, 495, -30, 'type_B'],
[180, 450, 300, 'type_E'],
[40, 890, 660, 'type_A'],
[170, 390, 300, 'type_D'],
[140, 360, 30, 'type_F'],
[160, 280, -160, 'type_C'],
[130, 440, -420, 'type_F'],
[260, 330, -390, 'type_B'],
[170, 130, -270, 'type_E'],
[340, 190, -50, 'type_D'],
[200, 210, 265, 'type_C'],
[900, 320, 440, 'type_F'],
[130, 200, -450, 'type_A']]
我需要帮助从此列表中获取数据并在函数中使用它来生成给定width
,height
和x
坐标(可能是任何内容)的不同类型。
例如,如果Type_A
的{{1}} width
30
height
30
和x
坐标为30
,我需要为样式A生成这些样式(可能是红色并且具有某些花瓣和纹理)。
到目前为止,我已创建了这个:
def draw_flowers(parameter_list):
pass
draw_flowers(list_5)
我不知道如何从列表中提取数据,以便为列表中的某些类型提供维度。
答案 0 :(得分:2)
编写switch-case的最pythonic方法是使用字典:
def styleA(width, height, x):
# do something
def styleB(width, height, x):
# do something
def styleC(width, height, x):
# do something
flower_function = {
'type_A': styleA,
'type_B': styleB,
'type_C': styleC
}
def draw_flowers(parameter_list):
for width, height, x, type in parameter_list:
flower_function[type](width, height, x)
答案 1 :(得分:0)
据我了解,调度不仅仅基于type
参数。但可能意味着任意复杂的规则:
"
Type_A
的{{1}}为30,width
为30,height
坐标为30 =>x
"
也许您需要某种multimethods,但不仅基于类型,还基于值?
对于更基本的用法,可能会有这个诀窍:
styleA
这种方法的主要优点是它明确地将调度员(知道你的"规则")与应用各种风格的功能分开。这是放松测试的必要条件。