小编sun*_*nny的帖子

这个功能有什么作用?(Python迭代器)

def partition(n, iterable):
   p = izip_longest(*([iter(iterable)] * n))
   r = []
   for x in p:
       print(x) #I added this
       s = set(x)
       s.discard(None)
       r.append(list(s))
   return r
Run Code Online (Sandbox Code Playgroud)

这实际上是在SO上的一个职位发布,并且是一个新手我觉得它很有趣.所以你得到如下输出:

partition(5, L)
(1, 2, 3, 4, None)
Out[86]: [[1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

对我来说,这已经令人困惑,因为我认为izip_longest(*([iter(iterable)] * n))izip_longest在n个相同迭代器的列表上运行该函数,所以我首先要预期输出(1,1,1,1,1)然后输出(2,2,2,2,2)等等.

这个问题的简短版本就是这一行:

 p = izip_longest(*([iter(iterable)] * n))
Run Code Online (Sandbox Code Playgroud)

解析它我会想[iter(iterable)]*n创建一个长度为n的相同iterables的列表,它们都指向同一个东西 - 这就是它在命令行上的作用,但这似乎不是它的作用这里基于上面印刷的输出.

另外我认为开头的*...longest(*...是因为列表的长度未知,但我认为这完全没有意义.*函数调用中的第一个符号是什么?似乎它不是简单地指出一个未知长度的参数列表......

所以在一天结束的时候,我完全迷失了.有人可以告诉我这个语法吗?

非常感谢任何输入!


感谢所有有用的答案,每个人.我不确定我是否正在寻找答案或问题,但在我看来,这个列表理解将对列表和元组做同样的事情(我意识到迭代器也适用于字典,自定义类,其他东西.. .)

[L[i*n:(i+1)*n] for i in range(int(ceil(len(L)/float(n)))) ]
Run Code Online (Sandbox Code Playgroud)

python iterator

5
推荐指数
2
解决办法
157
查看次数

为什么 var_dump((int)(PHP_INT_MAX + 1)) 是负数?

我从这里提取了这个结果:

有趣的是,结果var_dump((int)(PHP_INT_MAX + 1))将显示为负数(在此特定示例的情况下,它将显示int(-9223372036854775808))。同样,这里的关键是让候选人知道该值将显示为负数。

int 是否为负,因为加 1 会溢出整数位并更改表示 int 符号的位?什么原因?

php

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

Xcode 6启动屏幕尺寸的方式/位置与Apple文档相对应?

我确信这个信息在某处,但我找不到,Apple开发人员热线似乎不知道我在说什么.在Xcode中用于启动屏幕的资产库中,有一些标记为:

iPhone Portrait ---> Retina HD 5.5和Retina HD 4.7 iOS8

iPhone Portrait ---> 2x&Retina 4 iOS 7,8

iPhone Portrait ---> 1x,2x和Retina 4 iOS 5,6

我已准备好启动屏幕,并且我有这些单独文件的大小,但我看不到它们的大小与Xcode中的这些Apple标签的对应关系.此外,这里的Apple文档(https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Appendices/Properties.html#//apple_ref/doc/uid/TP40011225-CH26-SW1这是Apple Developer推荐给我的只是指iphone 6和6s尺寸,这与Xcode标签组织不符.

这似乎应该是1分钟的查询.我错过了什么,这个超级基本信息在哪里?

iphone xcode6

5
推荐指数
2
解决办法
3305
查看次数

PyMongo:当no_cursor_timeout = True时光标会发生什么

cursor查看MongoDB 的文档时,我看不到删除游标的方法。如果我使用no_cursor_timeout属性设置为True 的游标,在PyMongo中会发生什么?即使我还没有到达游标结果的结尾,脚本结束时游标也会被删除吗?

mongodb pymongo

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

(numpy)__array_wrap__做什么?

我是第一次进入SciPy LinAlg模块,并且看到了以下功能:

def _makearray(a):
    new = asarray(a)
    wrap = getattr(a, "__array_prepare__", new.__array_wrap__)
    return new, wrap
Run Code Online (Sandbox Code Playgroud)

到底是__array_wrap__做什么的?我找到了文档,但是我不明白这个解释:

 At the end of every ufunc, this method is called on the input object with the
 highest array priority, or the output object if one was specified. The ufunc-
 computed array is passed in and whatever is returned is passed to the user. 
 Subclasses inherit a default implementation of this method, which transforms the
 array into a new instance …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

什么=>在类型签名中意味着什么?

我刚开始学习一个Haskell,我在一个例子中看到了这个没有解释:

tell :: (Show a) => [a] -> String
Run Code Online (Sandbox Code Playgroud)

这是什么意思,特别是=>?我知道如果我替换->或删除它将无法工作,但我真的不明白为什么.

haskell symbols

5
推荐指数
3
解决办法
731
查看次数

ShinyR:单击按钮后仅运行一次代码

一旦用户选择了输入参数,我就会在 Shiny 应用程序中运行相当耗时的计算。为了确保计算不会运行不必要的时间,我创建了以下操作按钮:

 actionButton('seeData','see Data' )
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用以下代码仅在每次单击按钮时运行一次耗时的计算(并且在没有单击按钮时从不运行):

 observeEvent( input$seeData, {

   ...long, includes several function calls...  

})
Run Code Online (Sandbox Code Playgroud)

observeEvent我内部确实引用了其他输入参数。

我发现,无论我调整输入参数多少次,直到按下按钮才第一次运行计算。但是,一旦我按下按钮一次,只要更改任何输入参数,就会运行计算。当我只按一次按钮时,为什么代码会运行第二次、第三次、第四次(等等)?

我的目标似乎只是典型的用例,但我认为有一些observe我不理解的棘手isolate问题。observeEvent我做错了什么以及如何实现一键一计算功能?

r shiny

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

解压嵌套字典的单个列表理解

我想转这个

a = {'a': {'b': 'b aw', 'c': 'c aw'}, 'b': {'b': 'b2 aw', 'c': 'c2 aw'}, 'c': {}}
Run Code Online (Sandbox Code Playgroud)

进入这个

['b aw', 'c aw', 'b2 aw', 'c2 aw']
Run Code Online (Sandbox Code Playgroud)

具有列表理解能力。我想我需要一些方法来使这个表达“合法”:

a2 = [a1 for a1 in a.values().values()]
Run Code Online (Sandbox Code Playgroud)

我不想要,dict(a.values)因为那只会让我回到我原来的字典,a。我知道有很多方法可以用 for 循环来做到这一点,但是有没有办法在没有 for 循环的情况下做到这一点?谢谢。

python list-comprehension

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

Python正则表达式拆分但将正则表达式匹配的末尾部分放回字符串中?

我想找到一个正则表达式,它可以将段落(长字符串,没有新行字符需要担心)分解成句子,其中一个简单的规则是{.,?,!}后跟一个空格然后是一个大写字母应该是句子的结尾(我意识到这对现实生活来说不是一个好规则).

我有部分工作,但它没有完成这项工作:

line = 'a b c FFF! D a b a a FFF. gegtat FFF. A'
matchObj = re.split(r'(.*?\sFFF[\.|\?|\!])\s[A-Z]', line)
print (matchObj)
Run Code Online (Sandbox Code Playgroud)

版画

['', 'a b c FFF!', '', ' a b a a FFF. gegtat FFF.', '']
Run Code Online (Sandbox Code Playgroud)

而我想得到:

['a b c FFF!', 'D a b a a FFF. gegtat FFF.']
Run Code Online (Sandbox Code Playgroud)

所以有两个问题.

  • 为什么结果中有空成员('')?

  • 我理解为什么D从分裂结果中删除 - 这是第一次搜索的一部分.如何以不同的方式构建我的搜索,以便在标点符号后面的大写字母被放回,以便它可以包含在下一句中?在这种情况下,如何让D在分割结果的第二个元素中出现?

我知道我可以通过某种for循环来完成这个,只是剥离第一个结果,加回大写字母,然后重新做一遍,但这似乎不是那么Pythonic.如果正则表达式不是这里的方法,还有什么东西仍然可以避免for循环吗?

谢谢你的任何建议.

python regex

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

int a[] { (functioncall(a1, a2), 0)...}; (无效(a)); 这个语法是什么/意味着什么?

我遇到了这个 post可变参数模板函数来连接 std::vector 容器,建议使用以下语法:

template<typename T>
void append_to_vector(std::vector<T>& v1, const std::vector<T>& v2) {
  std::cout << v2[0] << std::endl;
  for (auto& e : v2) v1.push_back(e);
}


template<typename T, typename... A>
std::vector<T> concat_version3(std::vector<T> v1, const A&... vr) {
    int unpack[] { (append_to_vector(v1, vr), 1)... };
    (void(unpack));
    return v1;
}
Run Code Online (Sandbox Code Playgroud)

我开始玩弄它以了解它是如何工作的,因为我还没有看到这个:

int unpack[] { (append_to_vector(v1, vr), 0)... };
(void(unpack));
Run Code Online (Sandbox Code Playgroud)

似乎这是某种动态生成的初始化列表,它也有副作用?我也对0上述无关紧要的事实感到困惑。我替换了 -1 和 5,这些值中的每一个也都工作得很好。

那么有人可以告诉我这种技术/语法的名称以及上面两行中究竟发生了什么?如果我错过了相关的 SO 帖子,我将非常感谢任何指点并道歉。

c++ templates variadic-templates c++11 list-initialization

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