问题列表 - 第10750页

添加元组以生成具有每个"列"小计的元组

添加两个或更多元组的值以产生每个"列"总数的最pythonic方法是什么?

例如:

>>> a = (10, 20)
>>> b = (40, 50)
>>> c = (1, 3)
>>> ???
(51, 73)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我考虑过以下几点:

def sumtuples(*tuples):
    return (sum(v1 for v1,_ in tuples), sum(v2 for _,v2 in tuples))

>>> print sumtuples(a, b, c)
(51, 73)
Run Code Online (Sandbox Code Playgroud)

我相信这远非理想 - 如何改进?

python tuples

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

在类型推断中需要"统一"的最简单的例子

我试图了解如何实现类型推断.特别是,我不太清楚"统一"的繁重发挥在何处/为何发挥作用.

我将举一个"伪C#"的例子来帮助澄清:

天真的方式是这样的:

假设您将程序"解析"到表达式树中,以便可以使用以下命令执行:

interface IEnvironment
{
    object lookup(string name);
}

interface IExpression
{
    // Evaluate this program in this environment
    object Evaluate(IEnvironment e);
}
Run Code Online (Sandbox Code Playgroud)

因此,"乘法"之类的东西可以用以下方式实现:

class Multiply : IExpression
{
    IExpression lhs;
    IExpression rhs;
    // etc.
    public object Evaluate(IEnvironment e)
    {
        // assume for the moment C# has polymorphic multiplication
        return lhs.Evaluate(e) * rhs.Evaluate(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后要"实现"类型推断,你可以做类似的事情:

interface ITypeEnvironment
{
    Type getType(string name);
}

interface IExpression
{
    //as before
    object Evaluate(IEnvironment e);
    // infer type
    Type inferType(ITypeEnvironment typeEnvironment);
} …
Run Code Online (Sandbox Code Playgroud)

c# scheme type-inference unification

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

在ASP.NET MVC中使用View Model + Data Model来支持类型化视图?

在处理大型应用程序时,大多数开发人员如何处理ASP.NET MVC中的Typed Views?我们正在考虑将特定于View的模型放在Models文件夹中,然后将所有域对象放入一个单独的项目中.这样我们的控制器可以轻松地将域对象添加到类型化视图,而域对象不需要知道视图布局本身.

例如,如果我们有一个Employee对象:

  • ID
  • 名字
  • 状态

然后我们的员工视图可能会使用ViewEmployeeModel对象:

  • 员工对象
  • 列表以填充状态下拉列表
  • 等等

这是一种明智的做法吗?有没有更好的方法来完成同样的事情?这似乎有点奇怪,因为我基本上有两个模型(一个用于视图,一个用于业务对象),但是它不比使用无类型视图更好吗?

architecture asp.net-mvc

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

类和可选参数的奇怪问题

好的,所以这让我整天疯狂.

为什么会这样:

class Foo:
    def __init__(self, bla = {}):
        self.task_defs = bla
    def __str__(self):
        return ''.join(str(self.task_defs))

a = Foo()
b = Foo()
a.task_defs['BAR'] = 1
print 'B is ==> %s' % str(b)
print 'A is ==> %s' % str(a)
Run Code Online (Sandbox Code Playgroud)

给我输出:

B is ==> {'BAR': 1}
A is ==> {'BAR': 1}
Run Code Online (Sandbox Code Playgroud)

我知道它与python通过引用传递所有内容有关.

但为什么会这样呢?这实际上让我一整天都疯了,基本上让我把我的东西拆开了.难道python不应该足够聪明来处理这样的事情吗?

python

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

如何在C#中使用两个排序标准?

我有一组字符串.我想选择包含另一个字符串的所有字符串.但我希望将第一项作为搜索开头的项目,然后按字母顺序排列其他项目.但是以下代码不起作用:

items = items
   .Where(a => a.Contains(contained))
   .OrderBy(a => a)
   ;
var startsWith = items.Where(a => a.StartsWith(contained));
items = startsWith.Union(items.Except(startsWith));
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

.net c# linq c#-3.0

0
推荐指数
2
解决办法
630
查看次数

OpenRemoteBaseKey()凭据

我正在尝试使用powershell来访问远程注册表,如下所示:

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $server)
$key = $reg.OpenSubkey($subkeyPath)
Run Code Online (Sandbox Code Playgroud)

根据我无法确定的某些因素,我得到了

使用"1"参数调用"OpenSubKey"的异常:"不允许请求的注册表访问."

要么

System.UnauthorizedAccessException:尝试执行未经授权的操作.Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode,String str)at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey,String machineName)

很明显,这是因为我正在运行powershell脚本的用户没有相应的凭据来访问远程注册表.我希望能够提供一组用于远程注册表访问的凭据,但我无法找到任何方法来执行此操作.我也不清楚确切地指定哪些用户可以远程访问注册表.

.net registry permissions powershell

6
推荐指数
2
解决办法
2万
查看次数

c#写入事件查看器

我正在尝试用我的c#代码写入事件查看器,但我得到了很棒的"对象引用没有设置为对象的实例"消息.我很感激这些代码的一些帮助,无论是它的错误还是更好的方法.这是我写入事件日志的内容:

private void WriteToEventLog(string message)
{
    string cs = "QualityDocHandler";
    EventLog elog = new EventLog();
    if (!EventLog.SourceExists(cs))
    {
        EventLog.CreateEventSource(cs, cs);
    }
    elog.Source = cs;
    elog.EnableRaisingEvents = true;
    elog.WriteEntry(message);
}
Run Code Online (Sandbox Code Playgroud)

这就是我试图称之为的地方:

private readonly Random _rng = new Random();
private const string _chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private string RandomString(int size)
{
    try
    {
        char[] buffer = new char[size];
        for (int i = 0; i < size; i++)
        {
            buffer[i] = _chars[_rng.Next(_chars.Length)];
        }
        return new string(buffer);
    }
    catch (Exception e)
    {
        WriteToEventLog(e.ToString());
        return null; …
Run Code Online (Sandbox Code Playgroud)

c# event-log

54
推荐指数
2
解决办法
9万
查看次数

为什么这个通用演员会失败?

我有以下继承:

internal abstract class TeraRow{}

internal class xRow : TeraRow {} // xRow is a child of TeraRow

public IEnumerable<TeraRow> Compare(MappedTables which, DateTime selectionStart
        , DateTime selectionEnd, string pwd)
{
    IEnumerable<xRow> result=CompareX();
    return  (IEnumerable<TeraRow>)result; //Invalid Cast Exception? 

}
Run Code Online (Sandbox Code Playgroud)

无法转换'System.Collections.Generic.List 1[xRow]' to type 'System.Collections.Generic.IEnumerable1 [TeraRow] 类型的对象

另外,为什么我需要施放它?

.net generics ienumerable casting

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

防止GDB进入函数(或文件)

我有一些这样的C++代码,我正在使用GDB:

void foo(int num) { ... }

void main() {
  Baz baz;
  foo (baz.get());
}
Run Code Online (Sandbox Code Playgroud)

当我进去时main(),我想介入foo(),但我想要跳过去 baz.get().

GDB文档说,"如果有一个函数行号信息的步骤命令只进入功能",所以我会很高兴,如果我能删除行号信息,baz.get()从我的可执行文件.但理想情况下,我可以告诉GDB"永远不会进入Baz类的任何功能".

有谁知道如何做到这一点?

gdb

25
推荐指数
2
解决办法
6969
查看次数

PHP相当于Python的yield运算符

在Python(和其他)中,您可以通过在函数中使用'yield'运算符来递增地处理大量数据.在PHP中以类似的方式做什么?

例如,假设在Python中,如果我想读取一个可能非常大的文件,我可以一次一行地处理每一行(这个例子是设计的,因为它与'for file in file_obj基本相同) "):

def file_lines(fname):
    f = open(fname)
    for line in f:
        yield line
    f.close()

for line in file_lines('somefile'):
    #process the line
Run Code Online (Sandbox Code Playgroud)

我现在正在做的(在PHP中)是我正在使用私有实例变量来跟踪状态,并且每次调用函数时都会相应地执行操作,但似乎必须有更好的方法.

php python lazy-evaluation

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