我指的是这个问题,特别是对@David Robinson和@mgilson的第一个答案的评论: 在列表中求和每个元组的第二个值
最初的问题是将每个tuble的第二个值相加:
structure = [('a', 1), ('b', 3), ('c', 2)]
Run Code Online (Sandbox Code Playgroud)
第一个答案:
sum(n for _, n in structure)
Run Code Online (Sandbox Code Playgroud)
第二个答案:
sum(x[1] for x in structure)
Run Code Online (Sandbox Code Playgroud)
根据讨论,第一个答案是快50%.
一旦我弄明白第一个答案是什么(来自Perl,我用Google搜索了特殊的_变量意味着在python中),我想知道怎么会出现一个纯粹的子集任务(只获得每个元组的第二个元素与获取和绑定到变量这两个元素)实际上更慢?是否缺少优化Python中的索引访问的机会?我错过了第二个答案需要时间吗?
所以我安装了msysgit,并从bash shell中成功运行git.
从bash shell中,我创建了键ssh-keygen
- 一切正常.
密钥文件在我的%userprofile%\.ssh
文件夹中(来自bash shell,它是:) ~/.ssh
.
我能够连接到我的服务器(在我的情况下解开).
接下来,我确实希望能够从Windows Cmd shell运行git.
添加c:\msysgit\bin
和c:\msysgit\mingw\bin
搜索路径.
Git在本地工作很好:分支,合并,添加,提交,结账,......运作良好.
但是,尝试使用服务器失败,使用:' Permission denied (publickey).
'
它看起来像git,当从命令行执行时查看尝试分配密钥文件的其他位置,或导致其失败的其他原因.
我需要一些指导或指导,了解如何实现自定义ostream.我的要求是:
首先,它是否值得从ostream中获得?从ostream得到什么?如果我的类只实现了很少的operator<<
方法(包括一些自定义数据类型),该怎么办 我从ostream获得哪些功能?
假设我想要的是一个源自ostream的类,我需要一些指导来理解ostream和streambuf类之间的关系.我需要实施哪一个?看一些样本,似乎我根本不需要从ostream派生,只需给ostream构造函数一个自定义的streambuf.真的吗?这是规范的方法吗?
我需要在自定义streambuf中实现哪些虚拟功能?我已经看到了一些示例(包括这个站点:这里和这里,还有更多),一些覆盖了该sync
方法,而另一些覆盖了该overflow
方法.我应该覆盖哪一个?另外,查看stringbuf和filebuf源(Visual Studio或GCC),这两个缓冲类都实现了streambuf的许多方法.
如果需要从streambuf派生的自定义类,是否可以从stringbuf(或任何其他类)而不是直接从streambuf获得任何好处?
至于"线".至少当我使用'endl'操纵器的类的用户是一个新行(即数据库中的记录)时,我想.也许 - 取决于努力 - 每个'\n'字符也应被视为新记录.谁为我的自定义ostream和/或streambuf获得通知?
我想编写一个模板,它将获取实例化函数的返回类型作为参数.
例如,假设我有一个Result
模板类:
template<type T>
class Result {
T _result_value;
T& operator=( T that );
~Result( );
}
Run Code Online (Sandbox Code Playgroud)
这个类有几个专业.在析构函数中,我想记录返回类型,并且在operator=
分配中我想检查并断言错误值.
理想情况下,我希望能够有这样的定义:
#define RESULT Result< /* decltype magic for type of current function */ >
Run Code Online (Sandbox Code Playgroud)
所以我可以用它:
HFILE MyOpenFile( ... ) {
RESULT result;
}
Run Code Online (Sandbox Code Playgroud)
...将被推断出来Result<HFILE>
.这是一个简化的例子:编写RESULT
代替Result<HFILE>
并不是什么大问题,但是还有其他情况下不容易获得当前函数的返回类型.
下面的代码编译并运行得很好.正当我以为我开始对rvalue引用和std :: forward进行了很好的掌握 - 这个非常简单的代码揭示了rvalue有一些非常基本的东西,我不明白.请澄清.
#include <iostream>
#include <iomanip>
using namespace std;
void fn( int&& n )
{
cout << "n=" << n << endl;
n = 43;
cout << "n=" << n << endl;
}
int main( )
{
fn( 42 );
}
Run Code Online (Sandbox Code Playgroud)
我用g ++ 4.7使用以下命令行编译它:
g ++ --std = c ++ 11 test.cpp
输出为:
n = 42
n = 43
我的主要问题是编译器在函数fn中存储'n'的位置?
我需要为我的网站添加从右到左(RTL)支持,已经使用Twitter Bootstrap实现了.据我所见,发行版没有任何内容.我错过了什么吗?是否有任何外部库/框架/工具?
[抱歉,我是Python新手.虽然这似乎是一个非常基本的问题,但我在询问这些观众之前做了我的尽职调查,试图避免真正愚蠢的问题.
我试图弄清楚从函数返回l值的正确习惯用法.假设我有一个64个对象的容器,我希望能够返回对这些对象的引用.
class ChessBoard:
def __init__(self):
self.squares = [None for x in range(64)]
square( row, col ):
return self.squares(row*8+col) <---- I'd like this to be l-value
Run Code Online (Sandbox Code Playgroud)
然后,从课外我想:
board = ChessBoard()
board.square(0,0) = Piece( Shapes.ROOK, Colors.White ) <-- I'm getting an error here
board.square(0,1) = Piece( Shapes.BISHOP, Colors.White )
... etc.
Run Code Online (Sandbox Code Playgroud)
所以,我希望函数'at'返回一个左值(类似于C++中的引用),但是我找不到类似于语言中的引用或指针的东西.如果我在包含一块的每个方块中存储一个列表,我可以做类似的事情:board.square(0,0)[0] = Piece - 但它看起来很疯狂(或者可能不是 - 正如我所说,我'我是语言的新手.
您将如何处理此数据结构?
我试图合理化两个似乎相关的视角(或者至少提供非常相似的功能):'Git Repository'视角(我在添加EGit后得到)和'Team Synchronizing'视角(我认为是EE分布的一部分).
据我所知,我能够让Git Repository工作(使用GitHub),或至少大部分功能:'Git Staging'窗口工作正常,我可以通过拖动文件来提交'未分级更改为"分阶段更改",然后单击"提交"图标.然后我可以通过右键单击工作区 - >遥控器 - >原点 - >网址,从"Git存储库"窗口推送我的更改,然后选择从菜单推送(是'正确'程序吗?).
通过"团队同步"的观点,即使设置它也没有运气.一旦选择'Synchronize ...'菜单,Git,然后我看到一个表(它是什么?).我正在为Destination尝试各种值(否则,无法点击Finish按钮),但无论我做什么,它都会告诉我所有项目都没有"更改".
右键单击项目并选择"团队"时,还有许多上下文菜单项.这些是什么?
我认为这个问题不是PyDev独有的,而是任何python调试器.
使用Eclipse和pydev,我无法在dev_appserver(Google应用引擎开发服务器)进程中打破我的WSGI处理程序.我不是100%肯定,但我认为这是GAE 1.7.6或1.7.7的回归,因为我几乎可以肯定我能够在升级到1.7.7之前调试我的代码
似乎GAE创建了一个不受PyDev控制的新进程('_python_runtime.py').我找不到PyDev中有"调试子进程"功能的任何证据,所以现在我有点迷失了.
看看GAE代码(1.7.7),看来子进程是在tools/devappserver2/http_runtime.py中调用的safe_subprocess.py/start_process
.
闲逛我没有看到任何明显的方法:1.从同一个过程告诉GAE服务器到用户处理程序.2.告诉GAE将新项目的命令行更改python _python_runtime.py
为python pydev.py ... --file _python_runtime.py
(即使这样,不确定PyDev是否能够将其取出).
有什么建议吗?这真的是回归吗?
编辑(部分答案):
这是部分答案.在SDK 1.7.6中,Google App Engine有一个全新的服务器.服务器现在是一个多进程.主进程生成子进程(称为运行时)以运行WSGI处理程序.这些子进程未被调试.
这种变化在社区中引起了很多反响,但显然GAE社区主要生活在谷歌群组中,而不是在SO中(直到昨天我才知道这一点).以下是讨论的链接:
https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/ep5BWYKpQpU
基本上有两种解决方案:
最简单的方法是使用旧的服务器,从1.7.7开始仍然可用.而不是dev_appserver.py,只需启动old_dev_appserver.py即可.在Eclipse PyDev中,转到Debug Configuration ...,并将'Main Module'替换为$(GOOGLE_APP_ENGINE)/old_dev_appserver.py,并启动,好像新服务器从未发生过一样.这个解决方案显然具有运行旧服务器的缺点,并且不知道该设置将保持多长时间.
第二个解决方案涉及更多,我还无法一路解决它.它基于PyDev的远程调试功能,并能够告诉GAE在运行时进程开始时运行脚本.所以这是怎么做的:
# gae_runtime_startup.py
import pydevd;
pydevd.settrace()
Run Code Online (Sandbox Code Playgroud)
一些相关链接:
PyBluez项目似乎是用Python做蓝牙的规范项目(如果我错了,请纠正我).但是,上一版本是从2009年11月起的0.18).问题(目前,我对第43期最烦恼:不支持python 2.7)没有修复.
我确实看到了一些活动,所以我想知道它的状态.PyBluez是做蓝牙的规范方式吗?PyBluez有替代品吗?(我很想念BlueSoleil堆栈支持).