我想知道如何在列表推导中执行多个命令.
你能给我一个简单的例子:
[print ("bla1") and print ("bla2") for i in list]
Run Code Online (Sandbox Code Playgroud)
所以对于4长度4的列表,我会:
bla1
bla2
bla1
bla2
bla1
bla2
bla1
bla2
Run Code Online (Sandbox Code Playgroud)
相反,我没有在文档中轻易找到它.(如果你能看到一个明显的原因,我没有,并可以让我知道我应该如何搜索更好的东西).
编辑:好的,根据评论,这是一个非常糟糕的例子.我有兴趣从旧的创建一个新的,但我觉得我需要两个命令来做到这一点.(当然不是简单的印刷品).例如.我有一个列表列表,我想创建一个列表,该列表是操作子列表的结果.
我有一个列表,我想只对那些满足某种条件的条目使用某个函数 - 保持其他条目不被修改.
示例:假设我想仅将那些偶数的元素乘以2.
a_list = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
通缉结果:
a_list => [1, 4, 3, 8, 5]
Run Code Online (Sandbox Code Playgroud)
但是[elem * 2 for elem in a_list if elem %2 == 0]收益率[4, 8](它还充当了过滤器).
什么是正确的方法呢?
我有一个班级Foo住在Src/Projects/SomeProject/Foo.py
我有一个班级FooTest(unittest.TestCase)住在:
Src/Projects/SomeProject/tests/FooTest.py
Run Code Online (Sandbox Code Playgroud)
当我使用 pytest 运行它时(我只需在 Src 中输入“py.test”即可运行所有测试),我得到:
def setUp(self):
self.foo = Foo()
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
(我已经from Foo import Foo在FooTest.py并且Foo.py正在sys.path.
但是当我用 python 运行它时:python Src/Projects/SomeProject/tests/FooTest.py一切正常。)
另外,如果我只是将 FooTest.py 移动到,Src/Projects/SomeProject那么使用 py.test 运行就会突然起作用。
有任何想法吗?
我的程序中有几个枚举,我想在不同的类之间共享它。
当我尝试在每个类中定义它时,出现“重新定义”错误。
然后我搜索了Google,发现应该将其放在其他标题中。我试图做到这一点,并将标头包含在每个类标头中-我仍然遇到相同的错误。
搜索了更多内容,并在StackOverflow中找到一个线程,说我应该将它们放在自己的名称空间中。所以我尝试了:
enum.h:
namespace my_enums
{
enum classification {DATA_STORAGE,DMS,E_COMMERCE,GAMING,RTES,SECURITY};
enum skill { CPP, JAVA, SCRIPT, WEB, SYSTEM, QA };
enum company_policy {CHEAP, LAVISH, COST_EFFECTIVE};
}
Run Code Online (Sandbox Code Playgroud)
但这仍然不起作用:首先,如果告诉包含标头的类为:“使用名称空间my_enums;”。我收到“是模棱两可”的错误。
做我想做的正确方法是什么?
在此先感谢^ _ ^
简洁版本:
假设我有一个字符串str和一个文件functions.py,我想从中导入一个名称存储在str.
我该怎么办?我想要这样的东西:
from functions.py import str
Run Code Online (Sandbox Code Playgroud)
但对 str 进行了评估,并且不导入方法“str”(该方法不存在)。
经过一番谷歌搜索后,我(我希望)接近:
func_name = str
_tmp = __import__('functions.py', globals(), locals(), ['func_name'], -1)
func = ???? <what to put here?>
Run Code Online (Sandbox Code Playgroud)
提前致谢。
编辑:TMI。
我是C++的新手.
在一个多小时内抨击这个错误.可能有经验的人可以通过它看到.
以下代码给出了错误:
class TimeTravellingCellar {
private:
public:
int determineProfit (int [] profit, int [] decay) {
int N = sizeof(profit)/sizeof(decay);
int max = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == j) continue;
if (profit [i] - decay [j] > max)
max = profit [i] - decay [j];
}
}
return max;
}
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio Express profit在参数中放置一条红线,determineProfit并说:
expected a …
奇怪的是我正在使用迭代Oo内置的Python
我有一个名为Card的课程.除其他外,卡还有一个名称和一个符号列表(字符串).
这是我的一段代码(所有打印用于调试目的)
# This prints all the names of the cards in the deck before the iteration.
print(str([card.name for card in self.thegame.game_deck.deck[0]]))
for card in self.thegame.game_deck.deck[0]:
if 'CASTLE' not in card.symbols:
self.thegame.game_deck.deck[0].remove(card)
print(card.name + ' was removed')
else: print(card.name + ' was not removed')
# This prints all the names of the cards in the deck after the iteration.
print(str([card.name for card in self.thegame.game_deck.deck[0]]))
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这是stdout的输出:
['Writing', 'Tools', 'The Wheel', 'Sailing', 'Pottery', 'Oars', 'Mysticism', 'Me
talworking', 'Masonry', 'Domestication', 'Code of …Run Code Online (Sandbox Code Playgroud) 我努力更好地理解指针,我写了这段代码:
int *a = 17;
printf("%d", a+3);
它使用gcc-4.3.4在c下编译得很好:http://ideone.com/abotd
然而它无法用c ++编译:http://ideone.com/IdGHy
我想知道为什么.
另外,从第一个链接可以看到输出是29.我伪理解发生了什么:sizeof(int)是4,当我写了+ 3而不是添加3到17时,正在添加3*4 .
不过,如果有人能够更有说服力地解释它,我将不胜感激.
谢谢!