这个问题以前曾被问过 - 但我无法用任何答案来解决它。我在pycharm中打开了一个项目文件夹(注意项目文件夹不在../PycharmProject/...目录中。
我的结构非常基本:
project_title (folder)
|--src (folder)
|-- app.py
|-- pipeline_tools (folder)
|-- helpers.py
|-- other modules
Run Code Online (Sandbox Code Playgroud)
我尝试了所有可能的解决方案和组合,但是当app.py我尝试从任一模块导入函数时,tools我收到错误。
此外,Pycharm 用红色强调了以下声明:
1) from pipeline_tools.helpers import a_certain_function(红色下划线带有“未解决的参考”)
但以下内容没有给我带来红色:
2)from .pipeline_tools.helpers import a_certain_function(无红色下划线,注意相对导入)
事实上,我__init__.py在模块内部有或没有 a 没有任何改变 - 我仍然收到以下两个错误:
对于 1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/home/gabriele/pycharm-2019.1.1/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'pipeline_tools'
Run Code Online (Sandbox Code Playgroud)
为 2) …
我想从一定数量的变量范围创建字典,如下所示。
我确实有一个非常基本的工作解决方案,但我想知道是否有一些更简洁的方式来表达相同的想法(我觉得它可以用 itertools 解决?)
a = [1, 2, 3]
b = ["me", "you", "her"]
c = range(1, 5)
d = ["mon", "tues", "wed"]
dic = {"a": None, "b": None, "c": None, "d": None}
for i in a:
dic["a"] = i
for j in b:
dic["b"] = j
for k in c:
dic["c"] = k
for l in d:
dic["d"] = l
print(dic)
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在解决这个小问题,我确信可以(并且应该)递归地解决它。
# split list in sublists based on length of first element.
list = [3, 1, 2, 3, 4, 1, 2, 3, 4]
#* #*
# *number of elements of the sublist
Run Code Online (Sandbox Code Playgroud)
显示比解释要好,上面的结果应该是:
[[1, 2, 3], [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)
我正在处理的列表始终遵循此逻辑,第一个元素始终是以下 n 个元素的长度。
编辑:
根据一些建议,我只是添加了一个 yield 来懒惰地完成它。
def split(ls):
"""
func that given a list extracts sub lists with the length indicated by the first element
[2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4] => [[1, …Run Code Online (Sandbox Code Playgroud) python ×2
combinations ×1
dictionary ×1
import ×1
list ×1
module ×1
pycharm ×1
python-3.6 ×1
python-3.x ×1
recursion ×1
split ×1