小编Los*_*_DM的帖子

list comprehension python中的多个动作

我想知道如何在列表推导中执行多个命令.

你能给我一个简单的例子:

[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)

相反,我没有在文档中轻易找到它.(如果你能看到一个明显的原因,我没有,并可以让我知道我应该如何搜索更好的东西).

编辑:好的,根据评论,这是一个非常糟糕的例子.我兴趣从旧的创建一个新的,但我觉得我需要两个命令来做到这一点.(当然不是简单的印刷品).例如.我有一个列表列表,我想创建一个列表,该列表是操作子列表的结果.

python list-comprehension

15
推荐指数
3
解决办法
2万
查看次数

Python列表理解 - 简单

我有一个列表,我想只对那些满足某种条件的条目使用某个函数 - 保持其他条目不被修改.

示例:假设我想仅将那些偶数的元素乘以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](它还充当了过滤器).

什么是正确的方法呢?

python list-comprehension

7
推荐指数
1
解决办法
1万
查看次数

在 /test 文件夹下使用 py.test 运行时出现“TypeError: 'module' object is not callable”

我有一个班级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 FooFooTest.py并且Foo.py正在sys.path.

但是当我用 python 运行它时:python Src/Projects/SomeProject/tests/FooTest.py一切正常。)

另外,如果我只是将 FooTest.py 移动到,Src/Projects/SomeProject那么使用 py.test 运行就会突然起作用。

有任何想法吗?

python pytest

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

通过类共享C ++中的枚举

我的程序中有几个枚举,我想在不同的类之间共享它。

当我尝试在每个类中定义它时,出现“重新定义”错误。

然后我搜索了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;”。我收到“是模棱两可”的错误。

做我想做的正确方法是什么?

在此先感谢^ _ ^

c++ enums namespaces

3
推荐指数
2
解决办法
3381
查看次数

在 Python 中使用字符串导入

简洁版本:

假设我有一个字符串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。

python

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

愚蠢的语法错误c ++

我是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 …

c++ syntax

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

无法正确迭代我的列表

奇怪的是我正在使用迭代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)

python list

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

初始化指针,c和c ++编译器之间的区别(gcc-4.3.4)

我努力更好地理解指针,我写了这段代码:

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 .

不过,如果有人能够更有说服力地解释它,我将不胜感激.

谢谢!

c c++ gcc pointers

0
推荐指数
1
解决办法
405
查看次数

标签 统计

python ×5

c++ ×3

list-comprehension ×2

c ×1

enums ×1

gcc ×1

list ×1

namespaces ×1

pointers ×1

pytest ×1

syntax ×1