小编PPC*_*PPC的帖子

如何将逻辑OR应用于Excel中的数组

我试图通过ORing两个数组让Excel成为一个数组.作为一个例子,让两个数组A1:A37,8,-3B1:B34,-8,-8.

这应该相当简单,但似乎是这样

OR ( A1:A3 > 0 ; B1:B3 > 0 )
Run Code Online (Sandbox Code Playgroud)

返回TRUE而不是我期待的数组(TRUE, TRUE, FALSE).

当然我可以使用肮脏的技巧

(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1
Run Code Online (Sandbox Code Playgroud)

但谁愿意维持这一点呢?

此外,有可能搜索"CSE(Ctrl+ Shift+ Enter)公式"(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php),但它看起来真的像黑魔法.

我错过了一些容易的事吗?

对于那些对它感兴趣的人来说,我正在尝试构建的实际公式当然要复杂一些.它试图计算(通过SUMPRODUCT)所有行(status == A OR status == B) AND Date = some cell.我正在寻找的OR只是我的一个数组,SUMPRODUCT并没有在单元格中定义(这太容易了).

arrays excel

19
推荐指数
3
解决办法
4万
查看次数

列出标志Enum中的所有位名称

我正在尝试创建一个帮助方法来列出Enum值中设置的所有位的名称(用于记录目的).我想要一个方法,它将返回一些变量中设置的所有枚举值的列表.在我的例子中

[Flag]
Enum HWResponse
{
   None = 0x0,
   Ready = 0x1,
   Working = 0x2,
   Error = 0x80,
}
Run Code Online (Sandbox Code Playgroud)

我喂它0x81,它应该为我提供一个IEnumerable<HWResponse>包含{Ready, Error}.

由于我没有找到更简单的方法,我尝试编写下面的代码,但我无法编译.

public static IEnumerable<T> MaskToList<T>(Enum mask) 
{
  if (typeof(T).IsSubclassOf(typeof(Enum)) == false)
    throw new ArgumentException();

  List<T> toreturn = new List<T>(100);

  foreach(T curValueBit in Enum.GetValues(typeof (T)).Cast<T>())
  {
    Enum bit = ((Enum) curValueBit);  // Here is the error

    if (mask.HasFlag(bit))
      toreturn.Add(curValueBit);
  }

  return toreturn;
}
Run Code Online (Sandbox Code Playgroud)

在这个版本的代码中,编译器抱怨它无法将T强制转换为Enum.

我做错了什么?有更好(更简单)的方法吗?我怎么能演员?

另外,我试着把方法写成

public static IEnumerable<T> MaskToList<T>(Enum mask) where T:Enum
Run Code Online (Sandbox Code Playgroud)

但Enum属于一种禁止'where'语法的特殊类型(使用C#4.0)

c# generics enums enumeration

11
推荐指数
2
解决办法
7550
查看次数

Python中是否有速记初始化器?

我没有找到一个简短的构造函数调用的引用,它会初始化调用者选择的变量.我在寻找

class AClass:
    def __init__(self):
        pass

instance = AClass(var1=3, var2=5)
Run Code Online (Sandbox Code Playgroud)

而不是写更重

class AClass:
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2
Run Code Online (Sandbox Code Playgroud)

或者更重

instance = AClass()
instance.var1 = 3
instance.var2 = 5
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

python

4
推荐指数
2
解决办法
174
查看次数

Python oneliner 初始化字典

我正在寻找一个简短而紧凑的单行代码来从 Python 中的列表初始化字典。是否有等效于下面的两个结构?

dic = {}
for elt in list:
  dic[elt.hash] = elt
Run Code Online (Sandbox Code Playgroud)

.

dic2 = {}
defaultValue = 0
for elt in list:
  dic2[elt] = defaultValue
Run Code Online (Sandbox Code Playgroud)

我已经看到了Counter第二种情况的使用,但它是一个非常狭窄的情况,我正在寻找通用语法。

python dictionary python-3.x

4
推荐指数
1
解决办法
3841
查看次数

如何在另一个线程填充IEnumerable时枚举它

我希望在同一台机器上有两个线程,一个用于填充集合,另一个用于在数据可用时立即弹出数据,并在知道结束时停止.我只是不知道要使用什么样的集合......

private void DataProviderThread()
{
    GlobalCollection = new SomeMagicCollection();

    for (int i = 0; i < 100; i++)
    {
        GlobalCollection.Add(new SomeDataItem(i));
        Thread.Sleep(100);
    }

    GlobalCollection.IHaveFinishedPopulatingThanksAndBye();
}

private void DataCruncherThread()
{
    foreach (var item in GlobalCollection)
    {
        // Do whatever
    }
    // The control should exit foreach only once the data provider states that the collection is finished  
}
Run Code Online (Sandbox Code Playgroud)

然后我想简单地迭代它,让Collection照顾好

  • 保持线程安全
  • 授予标准IEnumerable功能
  • 让我的数据cruncher线程等待新项目,直到DataBuilder被明确调用IHaveFinishedPopulatingThanksAndBye(),然后干净地退出循环
  • 请允许我使用相同的约束迭代其他几个线程

我无法相信C#不会在新版本中发布此版本.但它的名字是什么?

c# collections multithreading thread-safety

3
推荐指数
1
解决办法
112
查看次数

是否存在#include的T-SQL等价物,以及为什么

可能重复:
TSQL中的常量和包含文件

我一直在寻找与C"#include"指令等效的T-SQL.我没想到,我不知道

  • 是否有可能MS不包含任何类型的SQL文件包含/连接执行
  • 如果没有,为什么
  • 如果没有,有没有更好的方法让我一次执行多个SQL文件而无需复制粘贴或手动预编译

对于那些好奇我的动机,我正在写一组类似的查询,我发现外部化常量(来自枚举表),预计算(制作一些测试输入表)和参数变量(我正在工作的子集)很方便上).

据我所知,我不能真正使用存储过程或函数(我不喜欢用这些来污染我的数据库的想法).

sql t-sql sql-server

1
推荐指数
1
解决办法
2161
查看次数