小编Pra*_*are的帖子

如何排序此列表?

我有一份清单清单.

List<List<T>> li = {
   {a1,a2,a3 ... aN},
   {b1,b2,b3 ... bN},
   ...
};

double foo(List<T> list)
{
    // do something 
    // e.g {1,2,3} 
    // it = 1 + 2 + 3

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

现在我想以li这样一种方式排序,即它应该出现在排序列表中foo(x)x更高位置.

C#/ Python /其他任何一种方法的最佳方法是什么?

c# ruby python sorting haskell

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

将项添加到python中的列表列表时出现意外的输出

这是相当直接的代码,它没有做我想做的事情.怎么了?

In [63]: c = [[]]*10

In [64]: c
Out[64]: [[], [], [], [], [], [], [], [], [], []]

In [65]: c[0]
Out[65]: []

In [66]: c[0] += [1]

In [67]: c
Out[67]: [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
Run Code Online (Sandbox Code Playgroud)

预期的产出是[[1], [], [], [], [], [], [], [], [], []].

python list

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

替换toString()[java]/__str__ [python]的csharp是什么?

在Python __str__ / __repr__中默认情况下由print函数调用.
在Java中public String toString()被称为System.out.println().

什么是C#的替代品?
我怎么能超载呢?(请提供小例子.)

提前致谢.

c#

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

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

python中的XOR交换算法?

我试图在python中实现XOR交换.

x,y= 10,20

x,y,x = x^y,x^y,x^y

print('%s , %s'%(x,y))
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

30 , 30
Run Code Online (Sandbox Code Playgroud)

我不是python的新手,但我无法解释这个输出.它应该是20,10.

引擎盖下发生了什么?

python algorithm tuples

3
推荐指数
2
解决办法
3026
查看次数

如何简化这种二叉树遍历功能?

template<typename T>
void traverse_binary_tree(BinaryTreeNode<T>* root,int order = 0)// 0:pre, 1:in , 2:post
{
    if( root == NULL ) return;

    if(order == 0) cout << root->data << " ";

    traverse_binary_tree(root->left,order);

    if(order == 1) cout << root->data << " ";

    traverse_binary_tree(root->right,order);

    if(order == 2) cout << root->data << " ";

}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来编写这个功能?

c++ algorithm binary-tree

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

如果"关闭"足够,为什么你需要`Flush`?

这就是我使用gzip writer的方式.

    var b bytes.Buffer
    gz := gzip.NewWriter(&b)

    if _, err := gz.Write([]byte(data)); err != nil {
        panic(err)
    }

    /* 
    if err := gz.Flush(); err != nil {
        panic(err)
    }
    */

    if err := gz.Close(); err != nil {
        panic(err)
    }
Run Code Online (Sandbox Code Playgroud)

游乐场链接https://play.golang.org/p/oafHItGOlDN

很明显,Flush + Close只是Close给出了不同的结果.

compress/gzip软件包的文件说:

func(z*Writer)Close()错误

Close通过将任何未写入的数据刷新到底层的io.Writer并写入GZIP页脚来关闭Writer.它不会关闭底层的io.Writer.

这个医生在谈论什么潮红?Flush如果Close足够的话,为什么你需要功能呢?为什么不Close打电话Flush

go

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

了解迭代器块和处理方法

我正在观看Jon Skeet的哥本哈根C#谈话视频,我最终得到了这段代码.
问题:
代码打印完成后发生了什么.我的意思是为什么会iterator.MoveNext()失败?

CODE:

 class IteratorBlocks
    {
        public static IEnumerable<string> GetStringsForever()
        {
            string current = "";
            char nextChar = 'a';
            try
            {
                while (true)
                {
                    current += nextChar;
                    nextChar++;

                    if (nextChar > 'z')
                    {
                        nextChar = 'a';
                    }

                    yield return current;
                }
            }
            finally
            {
                Console.WriteLine("Finished");
            }
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            IEnumerable<string> strings = IteratorBlocks.GetStringsForever();

            IEnumerator<string> iterator = strings.GetEnumerator();

            for (int i = 0; i < 10; i++)
            { …
Run Code Online (Sandbox Code Playgroud)

c# iterator

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

Python"奇怪"的输出

class Foo(object):
    def __init__(self,x):
        self.x = x
        self.is_bar = False
    def __repr__(self): return str(self.x)

class Bar(object):
    def __init__(self,l = []):
        self.l = l
    def add(self,o):
        self.l += [o]
    def __repr__(self): return str(self.l)

def foo_plus_foo(f1,f2):
    t = Bar()
    if not (f1.is_bar and f2.is_bar):
        f1.is_bar = True
        f2.is_bar = True
        t.add(f1)
        t.add(f2)
        print 'HERE'
    return t

if __name__ == '__main__':
    li = [Foo(1), Foo(2)]
    print foo_plus_foo(li[0],li[1])
    print foo_plus_foo(li[0],li[1])
Run Code Online (Sandbox Code Playgroud)

意想不到的输出:

HERE
[1, 2]
[1, 2]
Run Code Online (Sandbox Code Playgroud)

预期产量:

HERE
[1, 2]
[]
Run Code Online (Sandbox Code Playgroud)

怎么了?我做错了什么?为什么python使用旧值?我该怎么做才能避免这种情况?

谢谢!

python

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

在javascript中的时代转换给出了错误的答案

Date用来将unix毫秒纪元转换为日期.

所以1501783442 == Tuesday, 8 August 2017 12:35:57.

但javascript说它 Sun Jan 18 1970 14:39:43 GMT+0530 (IST).

<p id="demo"></p>

<script>
  var d = new Date(1501783442);
  document.getElementById("demo").innerHTML = d;
</script>
Run Code Online (Sandbox Code Playgroud)

Jsfiddle 链接.

这里发生了什么?

javascript

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

标签 统计

c# ×4

python ×4

algorithm ×3

sorting ×2

.net ×1

binary-tree ×1

c++ ×1

go ×1

haskell ×1

iterator ×1

javascript ×1

list ×1

radix-sort ×1

ruby ×1

tuples ×1