我怎样才能在Python中执行以下操作?
row = [unicode(x.strip()) if x for x in row]
Run Code Online (Sandbox Code Playgroud)
基本上,列表理解,如果变量存在,您执行函数.
谢谢!
我开始尝试使用gettext在C程序中翻译一些最常用的文本条目,但是当我深入研究这个时,我对所有不同的文件格式有点困惑,因为在功能上似乎有些重叠?
我想概述一下不同的格式
.po.pot.mo.gmo并学习
(1)我知道msgunfmt可以从.mo转换为.po,但由于.mo是最终结束格式,我认为这不是一个无损的过程.即如果我从hello1.mo转换为hello2.po然后从hello2.po转换为hello3.mo,我假设hello1.mo和hello3.mo将包含相同的语言字符串但是一些元信息将会丢失, 对?
在工作中,我们有一个部门维基(运行Mediawiki).不幸的是,有些人在没有登录的情况下编辑,这使得很难找到编辑来询问有关内容的问题.
有两种策略可以改善这一点
对于这部分,欢迎任何提示.但当然,奖励行为总是存在风险.
我知道这必须保持低水平,否则它会阻止任何编辑.但有点烦人的东西会很好.
[更新]我知道可以禁止匿名编辑,但这会给任何首次贡献带来很大障碍(特别是对于我们部门以外的人!),所以我不认为这是一个选项.[/更新]
[update2]使用LDAP或Active Directory无法解决问题,因为外部承包商也可以访问和使用wiki.[/ UPDATE2]
[update3]我不再为这家公司工作了.这并不意味着我完全对这个问题失去了兴趣,但从我目前的兴趣点来看,最有价值的部分是"你忘了登录吗?" 以下部分,我将根据问题的这一部分接受答案.[/ UPDATE3]
一个想法是为匿名用户提供额外的确认步骤 - "你真的确定要匿名提交吗?",尽管有这样一个问题,人们会有放弃或拒绝编辑的风险.但是,如果这个问题以更外交的方式重新措辞为"你忘了登录吗?" 我认为这似乎更容易接受.除此之外,还将捕获作者确实忘记登录的情况,但实际上希望将他/她的贡献归功于他/她的用户.最后一点本身就是想要它的充分理由.
这可能吗?
另一个令人讨厌的想法是在"保存页面"之后添加一个额外的强制延迟,显示类似"如果你已经登录就不必等待x秒".选择正确的x是很困难的,因为如果它很高,它将成为一个障碍,如果它太低可能没有任何区别.但后来我开始思考,从零开始然后在给定时间范围内给定IP地址的每次匿名编辑添加一秒延迟呢?这样就没有开始使用维基的障碍了,当延迟变得越来越重要时,用户已经贡献了很多,所以我认为结果更可能是编辑最终创建用户而不是放弃.这假设IP地址相当静态,
这可能吗?
我以为我真的理解这一点,并重新阅读标准(ISO 9899:1990)只是证实了我明显错误的理解,所以现在我问这里.
以下程序崩溃:
#include <stdio.h>
#include <stddef.h>
typedef struct {
int array[3];
} type1_t;
typedef struct {
int *ptr;
} type2_t;
type1_t my_test = { {1, 2, 3} };
int main(int argc, char *argv[])
{
(void)argc;
(void)argv;
type1_t *type1_p = &my_test;
type2_t *type2_p = (type2_t *) &my_test;
printf("offsetof(type1_t, array) = %lu\n", offsetof(type1_t, array)); // 0
printf("my_test.array[0] = %d\n", my_test.array[0]);
printf("type1_p->array[0] = %d\n", type1_p->array[0]);
printf("type2_p->ptr[0] = %d\n", type2_p->ptr[0]); // this line crashes
return 0;
}
Run Code Online (Sandbox Code Playgroud)
比较表达式my_test.array[0]并type2_p->ptr[0]根据我对标准的解释:
6.3.2.1数组下标 …
我有一个函数foo(i),它接受一个整数并花费大量的时间来执行.会不会有任何的初始化通过以下方式之间的显著性能差异一:
a = [foo(i) for i in xrange(100)]
a = map(foo, range(100))
vfoo = numpy.vectorize(foo)
a = vfoo(range(100))
Run Code Online (Sandbox Code Playgroud)
(我不关心输出是列表还是numpy数组.)
有没有更好的办法?
我想在它与其他东西连接之前评估一个令牌."问题"是标准将行为指定为
在重新检查替换列表以更换更多宏名称之前,删除替换列表中的##预处理标记的每个实例(不是来自参数),并将前面的预处理标记与以下预处理标记连接起来.
因此在下面的例子中,
#include <stdlib.h>
struct xy {
int x;
int y;
};
struct something {
char * s;
void *ptr;
int size;
struct xy *xys;
};
#define ARRAY_SIZE(a) ( sizeof(a) / sizeof((a)[0]) )
#define DECLARE_XY_BEGIN(prefix) \
struct xy prefix ## _xy_table[] = {
#define XY(x, y) {x, y},
#define DECLARE_XY_END(prefix) \
{0, 0} \
}; \
struct something prefix ## _something = { \
"", NULL, \
ARRAY_SIZE(prefix ## _xy_table), \
&(prefix ## _xy_table)[0], \
};
DECLARE_XY_BEGIN(linear1)
XY(0, 0) …Run Code Online (Sandbox Code Playgroud) 有可能有类似的东西:
list1 = ...
currentValue = 0
list2 = [currentValue += i, i for i in list1]
Run Code Online (Sandbox Code Playgroud)
我试过但是没有用?编写这些语法的正确语法是什么?
编辑:print语句就是一个例子.实际上我在循环外增加一个值.
我已经在SO上阅读了有关外部/内部联系的现有问题.我的问题是不同的-如果我的情况下有不同的翻译单元外部链接的同一个变量的多个定义会发生什么C和C++?
例如:
/*file1.c*/
typedef struct foo {
int a;
int b;
int c;
} foo;
foo xyz;
/*file2.c*/
typedef struct abc {
double x;
} foo;
foo xyz;
Run Code Online (Sandbox Code Playgroud)
使用Dev-C++和C程序,上述程序可以完美地编译和链接; 如果将其编译为C++程序,则会产生多重重定义错误.为什么它应该在C下工作?与C++有什么区别?此行为是否未定义且依赖于编译器?这段代码有多"糟糕",如果我想重构它,我该怎么办(我遇到过很多像这样编写的旧代码)?
我是一个Python新手,我想要做的事情之一是围绕列表理解.我可以看到它是一个非常强大的功能,值得学习.
cities = ['Chicago', 'Detroit', 'Atlanta']
airports = ['ORD', 'DTW', 'ATL']
print zip(cities,airports)
[('Chicago', 'ORD'), ('Detroit', 'DTW'), ('Atlanta', 'ATL')]
Run Code Online (Sandbox Code Playgroud)
如何使用列表推导,以便将结果作为列表中的一系列列表而不是列表中的一系列元组?
[['Chicago', 'ORD'], ['Detroit', 'DTW'], ['Atlanta', 'ATL']]
Run Code Online (Sandbox Code Playgroud)
(我意识到在这种情况下字典可能更合适,但我只是想更好地理解列表).谢谢!
我有这个C代码:
#include<stdio.h>
typedef struct {
int foo;
} MyStruct;
MyStruct init_mystruct(void);
int main(void) {
MyStruct mystruct = init_mystruct();
if( mystruct == NULL ) {
/* error handler */
}
return(0);
}
MyStruct init_mystruct(void) {
MyStruct mystruct;
int is_ok = 1;
/*
* do something ...
*/
/* everything is OK */
if( is_ok )
return mystruct;
/* something went wrong */
else
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
它具有初始化该结构的结构和功能.我正在尝试做的是,如果该函数出现故障,则返回NULL.
gcc错误消息:
code.c: In function ‘main’:
code.c:13: error: invalid operands to binary == (have ‘MyStruct’ …Run Code Online (Sandbox Code Playgroud)