Python 多次检查变量

Python 多次检查变量,python,if-statement,coding-style,Python,If Statement,Coding Style,我正在编写一些分析脚本,其中有许多条件需要满足才能正确实现代码。代码看起来很混乱,因为我必须不断检查某些东西。这是我问题的简化版本 我有一个变量名“测量类型” 测量类型可以是3个值,“透射”、“反射”、“两者”。我需要执行两组不同的指令,这取决于测量类型是处于(“传输”还是“反射”)还是测量类型==“两者” 我将在这里简化我的问题,因为我认为实际的代码并不重要 如果测量\u输入(“传输”、“反射”)我只需运行以下命令: table = pd.DataFrame(stuff) arr = [] f

我正在编写一些分析脚本,其中有许多条件需要满足才能正确实现代码。代码看起来很混乱,因为我必须不断检查某些东西。这是我问题的简化版本

我有一个变量名“测量类型”

测量类型可以是3个值,“透射”、“反射”、“两者”。我需要执行两组不同的指令,这取决于测量类型是处于(“传输”还是“反射”)还是测量类型==“两者”

我将在这里简化我的问题,因为我认为实际的代码并不重要

如果
测量\u输入(“传输”、“反射”)
我只需运行以下命令:

table = pd.DataFrame(stuff)
arr = []
for num in table:
    arr.append(num)
plt.plot(stuff)
由于我必须考虑
度量值\u type==“两者”
,因此我还必须运行此程序来检查:

table1 = pd.DataFrame(stuff)
arr1 = []
if measurement_type == 'both': 
    table2 =  pd.DataFrame(stuff) #always same dimensions as table1
    arr2 = []
for j in range(len(table)):
    arr1.append(table['data'][j])
    if measurement_type == 'both':
        arr2.append(table2['data'][j]
plt.plot(stuff)
if measurement_type == 'both':
    plt.plot(more stuff)
我必须运行后者,因为我需要考虑
measurement\u type='both'
这是无法控制的,因为我必须检查“两者”是否存在

有更好的方法吗?
当我的分析脚本变得越来越长、越来越复杂时,我宁愿不必反复输入
,如果度量值

您有两个基本上独立的操作:一个用于所有情况,另一个用于
两者。正如您所看到的,您的原始代码有点难以遵循:

if measurement_type == 'both': 
    table2 =  pd.DataFrame(stuff) #always same dimensions as table1
    arr2 = []
for j in range(len(table)):
    arr1.append(table['data'][j])
    if measurement_type == 'both':
        arr2.append(table2['data'][j]
提取独立于两个
的部分
;检查并妥善处理您的特殊情况:

arr1 = list(table['data'])   # This should be a straight conversion; no need to loop.
if measurement_type == 'both':
    arr2 = list(table2['data'])  #Similar conversion
如果您的
类型未实现
列表
转换,则至少使用理解而不是循环:

arr1 = [c for c in table['data']]     

如果我是你,我会创建一个单独的函数,它接受一个参数
measurement\u type
,并将操作分为两个逻辑部分。大概是这样的:

def plot_data(measurement_type):
   table1 = pd.DataFrame(stuff)
   arr1 = []
   for j in range(len(table)):
       arr1.append(table['data'][j])
   plt.plot(stuff)
   
   if measurement_type == 'both':
       table2 =  pd.DataFrame(stuff) #always same dimensions as table1
       arr2 = []
       for j in range(len(table)):
           arr2.append(table2['data'][j]
       plt.plot(more stuff)

这可能不是最有效的(您可能需要执行两次相同的循环),但是如果性能不是问题,那么将代码分解为更符合逻辑的部分可能会很有用。

您的问题还不清楚。根据您的描述,如果您在第二个代码块中,您已经知道它是
两者
;没有必要再检查一次,更不用说再检查两次了。我仍然必须检查
两者
,因为如果不是两者,我会执行
arr2。追加
会给我一个变量不存在错误。如果我不清楚,对不起,但我想说的是我正在运行第二块代码,而不是第一块。这是因为我希望相同的代码能够处理
measurement\u type
的所有可能值。要运行第二个块而不是第一个块,您已经验证了它是
两个
。请在该代码的开头查看您自己的评论:
如果度量值类型=='both',我正在运行此命令:
如果不是这样,那么我们需要您提供您的逻辑的准确示例。请提供预期的。对不起,您是正确的,我已相应地更改了它