我有一份清单清单.
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 /其他任何一种方法的最佳方法是什么?
这是相当直接的代码,它没有做我想做的事情.怎么了?
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 __str__ / __repr__中默认情况下由print函数调用.
在Java中public String toString()被称为System.out.println().
什么是C#的替代品?
我怎么能超载呢?(请提供小例子.)
提前致谢.
我试图在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.
引擎盖下发生了什么?
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)
有没有更好的方法来编写这个功能?
这就是我使用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?
我正在观看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) 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使用旧值?我该怎么做才能避免这种情况?
谢谢!
我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 链接.
这里发生了什么?
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