Tag: 成语

“除了最后一个”(或“在每一对连续的元素之间”)的习语(重复)

大家在某个时候遇到这个问题: for(const auto& item : items) { cout << item << separator; } …你最后得到一个你不想要的额外的分隔符。 有时不是打印,而是执行一些其他操作,但是这种连续的相同types的操作需要一些分隔符操作 – 但最后一个操作不会。 现在,如果你使用老式的循环和数组,你会这样做 for(int i = 0; i < num_items; i++) cout << items[i]; if (i < num_items – 1) { cout << separator; } } (或者你可以把最后一个项目圈出来)。如果你有任何允许非破坏性迭代器的东西,即使你不知道它的大小,你也可以这样做: for(auto it = items.cbegin(); it != items.cend(); it++) { cout << *it; if […]

Python:大多数惯用的方式将None转换为空string?

什么是最习惯的方式来做到以下几点? def xstr(s): if s is None: return '' else: return s s = xstr(a) + xstr(b) 更新:我纳入Tryptich的build议使用str(s),这使得这个例程除了string以外的其他types的工作。 Vinay Sajip的lambdabuild议令我印象深刻,但我想保持我的代码相对简单。 def xstr(s): if s is None: return '' else: return str(s)

什么是Pythonic的方式来检测python'for'循环中的最后一个元素?

我想知道对for循环中的最后一个元素进行特殊处理的最好方法(更紧凑和“pythonic”方式)。 有一段代码只能在元素之间调用,在最后一个元素中被抑制。 这是我目前如何做到的: for i, data in enumerate(data_list): code_that_is_done_for_every_element if i != len(data_list) – 1: code_that_is_done_between_elements 有没有更好的办法? 注意:我不想用黑客做比如使用reduce ;)

Python成语返回第一项或None

我确信有一个简单的方法来做到这一点,只是没有发生在我身上。 我打电话了一堆返回列表的方法。 该列表可能是空的。 如果列表非空,我想返回第一个项目; 否则,我想返回None。 此代码工作: my_list = get_list() if len(my_list) > 0: return my_list[0] return None 在我看来,这样做应该有一个简单的一行成语,但是对于我来说,我想不起来。 在那儿? 编辑: 我在这里寻找单行expression式的原因并不是我喜欢难以置信的简洁代码,而是因为我不得不写很多这样的代码: x = get_first_list() if x: # do something with x[0] # inevitably forget the [0] part, and have a bug to fix y = get_second_list() if y: # do something with y[0] # inevitably […]

Python“其他元素”的成语

我觉得我花了很多时间在Python中编写代码,但是没有足够的时间来创buildPythonic代码。 最近我遇到了一个有趣的小问题,我想可能有一个简单,习惯的解决scheme。 解释原文,我需要收集列表中的每一个顺序对。 例如,给出列表[1,2,3,4,5,6] ,我想计算[(1,2),(3,4),(5,6)] 。 当时我提出了一个快速的解决scheme,看起来像翻译的Java。 重温这个问题,我能做的最好的是 l = [1,2,3,4,5,6] [(l[2*x],l[2*x+1]) for x in range(len(l)/2)] 在长度不均匀的情况下,具有抛出最后一个数字的副作用。 有没有一个更习惯的方法,我错过了,或者这是我会得到最好的?

将键数组和值数组合并到Javascript中的对象中

我有: var keys = [ "height", "width" ]; var values = [ "12px", "24px" ]; 我想把它转换成这个对象: { height: "12px", width: "24px" } 在Python中,有简单的成语dict(zip(keys,values)) 。 有没有类似的jQuery或纯JavaScript,还是我必须做这个很长的路?

双从单个列表

通常情况下,我发现需要成对处理一个列表。 我想知道哪种方法可以做到这一点,并在Google上发现: pairs = zip(t[::2], t[1::2]) 我认为这是足够pythonic,但经过最近的讨论涉及成语与效率 ,我决定做一些testing: import time from itertools import islice, izip def pairs_1(t): return zip(t[::2], t[1::2]) def pairs_2(t): return izip(t[::2], t[1::2]) def pairs_3(t): return izip(islice(t,None,None,2), islice(t,1,None,2)) A = range(10000) B = xrange(len(A)) def pairs_4(t): # ignore value of t! t = B return izip(islice(t,None,None,2), islice(t,1,None,2)) for f in pairs_1, pairs_2, pairs_3, […]

在Java中打印时差最习惯的方法是什么?

我熟悉以毫秒为单位的打印时间差异: long time = System.currentTimeMillis(); //do something that takes some time… long completedIn = System.currentTimeMillis() – time; 但是,是否有一种很好的方式,使用Apache Commons甚至可怕的平台API的Date / Time对象以指定的格式打印一个完整的时间(例如:HH:MM:SS)? 换句话说,用Java编写一个毫秒级的时间格式,最简单,毫无意义的方法是什么?

在Java中命名参数成语

如何在Java中实现命名参数成语? (特别是对于构造函数) 我正在寻找Objective-C的语法,而不是JavaBeans中使用的语法。 一个小代码的例子会很好。 谢谢。

获取字典中对应于最小值的键

如果我有一个Python字典,我如何获得包含最小值的条目的密钥? 我正在考虑与min()函数有关… 鉴于input: {320:1, 321:0, 322:3} 它会返回321 。