拆开元组时可以使用类型提示吗?我想这样做,但结果是SyntaxError:
from typing import Tuple
t: Tuple[int, int] = (1, 2)
a: int, b: int = t
# ^ SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud) 路径的"长度"是路径中的边数.
给定源和目标顶点,我想找到从源顶点到给定长度 k 的目标顶点的路径数.
我们可以根据需要多次访问每个顶点,因此如果路径来自a于b:a -> c -> b -> c -> b它被认为是有效的.这意味着可以有循环,我们可以不止一次通过目的地.
两个顶点可以通过多个边连接.因此,如果顶点a顶点b通过两条边连接,那么a -> b通过边1和a -> b边2 的路径被认为是不同的.
顶点数N <= 70,路径长度K <= 10 ^ 9.
由于答案可能非常大,因此应以模数为单位进行报告.
这是我到目前为止所想到的:
我们可以使用广度优先搜索而不将任何顶点标记为访问,在每次迭代时,我们跟踪我们对该路径所需的边数'n_e'和产品 'p'中每个边缘的重复边数路径有.
如果n_e大于k,则搜索搜索应该终止,如果我们以n_e等于k 到达目的地,我们终止搜索并添加p到路径数的计数.
我认为我们可以使用深度优先搜索而不是广度优先搜索,因为我们不需要最短路径,并且在广度优先搜索中使用的Q的大小可能是不够的.
我正在考虑的第二种算法类似于使用这种方法的Floyd Warshall的算法.只有我们不需要最短的路径,所以我不确定这是否正确.
我的第一个算法的问题是'K'可以达到1000000000,这意味着我的搜索将一直运行,直到它有10 ^ 9个边缘,n_e边缘计数将在每个级别增加1,这将非常慢,我不确定它会终止大输入.
所以我需要一种不同的方法来解决这个问题; 任何帮助将不胜感激.
algorithm routes graph breadth-first-search depth-first-search
在 Pycharm 中,以下代码会产生警告:
from typing import List
list1: List[int] = [1, 2, 3]
list2: List[str] = ["1", "2", "3"]
list3: List[object] = list1 + list2
# ? Expected type List[int] (matched generic type List[_T]),
# got List[str] instead.
Run Code Online (Sandbox Code Playgroud)
为什么?我不应该连接两个混合的、暗示类型的列表吗?
我正在使用以下代码在python中实例化单例:
class Singleton(type):
def __init__(cls, name, bases, dic):
super(Singleton, cls).__init__(name, bases, dic)
cls.instance = None
def __call__(cls, *args, **kwargs):
if cls.instance is None:
if DEBUG:
print("Creating NEW Orchestrator instance")
else:
if DEBUG:
print("Using EXISTING Orchestrator instance")
cls.instance = super(Singleton, cls).__call__(*args, **kwargs)
return cls.instance
Run Code Online (Sandbox Code Playgroud)
该初始化如下所示:
def __init__(self, arg=None):
...
Run Code Online (Sandbox Code Playgroud)
当我实例化对象时,它似乎不接受该参数:
Obj = Object("parameter")
Run Code Online (Sandbox Code Playgroud)
arg不等于"parameter"。没有。
我认为这是将* args传递给调用的目的。在首次实例化单例时如何传递参数?
我想保存一个 Pandas 数据透视表供人类阅读,但DataFrame.to_csv不包括DataFrame.columns.name. 我怎样才能做到这一点?
示例:
对于以下数据透视表:
>>> import pandas as pd
>>> df = pd.DataFrame([[1, 2, 3], [6, 7, 8]])
>>> df.columns = list("ABC")
>>> df.index = list("XY")
>>> df
A B C
X 1 2 3
Y 6 7 8
>>> p = pd.pivot_table(data=df, index="A", columns="B", values="C")
Run Code Online (Sandbox Code Playgroud)
查看数据透视表时,我们有索引名称(“A”)和列名称(“B”)。
>>> p
B 2 7
A
1 3.0 NaN
6 NaN 8.0
Run Code Online (Sandbox Code Playgroud)
但是当导出为 csv 时,我们会丢失列名:
>>> p.to_csv("temp.csv")
===temp.csv===
A,2,7
1,3.0,
6,,8.0
Run Code Online (Sandbox Code Playgroud)
如何获得某种人类可读的输出格式,其中包含整个数据透视表,包括.columns.name(“B”)?
像这样的事情会很好:
B,2,7 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用正则表达式来捕获包含子字符串的推文至少两次,所以我使用的是一个简单的^.+ .+ .+$. 但是,这不匹配包含例如.
有没有一种聪明的方法可以捕捉带有任何肤色变化或没有肤色变化的表情符号,而无需将每个表情符号排成一行(例如[])?
python ×3
python-3.x ×2
type-hinting ×2
algorithm ×1
emoji ×1
emoji-tones ×1
graph ×1
oniguruma ×1
pandas ×1
pivot-table ×1
pycharm ×1
regex ×1
routes ×1
singleton ×1