使用Python

时间:2017-08-30 04:48:33

标签: python list sorting

我有这两个变量:

instance = [0.45,6.54,19.0,3.34,2.34]
distance_tolerance = [5.00,10.00,20.00]

我喜欢对instance中的每个数据进行排序,并根据它们的值小于distance_tolerance中的每个数据对其进行分类,并将其保存在变量中。

例如0.45 < 5.00然后创建一个变量来保存0.45并迭代每个数据。

预期结果:

data5 = [0.45,3.34,2.34]
data10 = [0.45,6.54,3.34,2,34]
data20 = [0.45,6.54,19.0,3.34,2.34]

我需要为此任务进行循环,因为实际数据很大。

执行此任务的最佳方法是什么?感谢

2 个答案:

答案 0 :(得分:1)

您可以简单地迭代并附加instance的值,这些值低于您所在的distance_tolerance的值。

因此对于distance_tolerance中的某些元素,您可以使用一个名为itemsLowerThan(value)的函数,该函数将返回instance中低于您传递的值的元素数组。

例如:

instance = [0.45,6.54,19.0,3.34,2.34]
distance_tolerance = [5.00,10.00,20.00]

def itemsLowerThan(value):
  arr = []
  for item in instance:
    if (item < value):
      arr.append(item)
  return arr

for tolerance in distance_tolerance:
  print(itemsLowerThan(tolerance))

会给出输出:

[0.45, 3.34, 2.34]
[0.45, 6.54, 3.34, 2.34]
[0.45, 6.54, 19.0, 3.34, 2.34]

答案 1 :(得分:0)

您可以使用嵌套列表解析。

[
    [0.45, 3.34, 2.34],
    [0.45, 6.54, 3.34, 2,34],
    [0.45, 6.54, 19.0, 3.34, 2.34],
]

相当于:

void MyDerivedClass::HideMyControls(bool hide)
{
  int param = (false == hide)? SW_SHOW : SW_HIDE;

  GetDlgItem(IDC_ENABLE_TP_DIRECTORY)->ShowWindow(param);//This is Checkbox control
  GetDlgItem(IDC_STATIC_NOTE)->ShowWindow(param);//This is label control
  GetDlgItem(IDC_STATIC_DIR_NAME)->ShowWindow(param);//This is label control
  GetDlgItem(IDC_EDIT_TP_DIRECTORY)->ShowWindow(param);//This is text control
  GetDlgItem(IDC_STATIC_TP_GRPBOX)->ShowWindow(param);//This is label control
  InvalidateRect(NULL); //NULL for testing
  UpdateWindow();
}