我有以下简单的课程:
public abstract class GitObject
{
public Repository Repository { get; set; }
public abstract string Serialize();
public abstract void Deserialize(string data);
public class Blob : GitObject
{
public string Data { get; set; }
public Blob(Repository repository, string data = null)
{
if (data != null) Data = File.ReadAllText(data);
Repository = repository;
}
public override string Serialize()
{
return JsonSerializer.Serialize(this);
}
public override void Deserialize(string data)
{
Blob blobData = JsonSerializer.Deserialize<Blob>(data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可能还有很大的改进空间(我很高兴听到这一点)。但是,该方法Deserialize
给了我错误
Each parameter …
Run Code Online (Sandbox Code Playgroud) 我有一个递归函数,它反转一个整数。反转的整数不能以零开头,例如:12340 变为 4321。
res = 0
base = 1
def reverse(n):
global res
global base
if n > 0:
reverse(n // 10)
res = res + (n % 10) * base
base = base * 10
return res
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但只有一次,因此我想摆脱全局变量。我想到了函数内部的辅助函数,reverse(n)
但我无法让它正常工作。我已经尝试了将近一个小时,并希望最终看到解决方案。
假设我们有 2 个元素:
x = (123, 'aab', 1)
y = (456, 'cca', 2) or y = None
Run Code Online (Sandbox Code Playgroud)
wherex[0]=Key, x[1]=Value, x[2]=Index
和y[0]=Key, y[1]=Value, y[2]=Index
, wherey
可能是None
Python 中是否有一种优雅的方式将Value
两个元素的 与min
函数进行比较并返回相应的Index
?考虑到这种情况,这y
可能是None
. 例如
x = (123, 'aab', 1)
y = (456, 'cca', 2)
Run Code Online (Sandbox Code Playgroud)
将返回,1
因为min(123,456) = 123
因此x
具有较小的值。或者
x = (123, 'aab', 1)
y = None
Run Code Online (Sandbox Code Playgroud)
也会回来 1
乍一看,这个问题似乎非常基本且简单,但我在编写有效的解决方案时仍然遇到了一些困难。这个想法是编写一个函数,该函数将两个生成器作为输入并生成每个列表的一项。如果任一列表为空,它将生成剩余列表的每个项目。例子:
list(alternate("abcdefg", [1, 2, 3, 4])) == ["a", 1, "b",2, "c", 3, "d", 4, "e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)
什么样的工作,但看起来很丑:
def alternate(xs1, xs2):
xs1 = iter(xs1)
xs2 = iter(xs2)
while xs1 and xs2:
try:
yield next(xs1), next(xs2)
except StopIteration:
for x1 in xs1:
yield x1
for x2 in xs2:
yield x2
Run Code Online (Sandbox Code Playgroud)
特别是我想避免在一开始就将输入转换为迭代器。我尝试使用 2 个简单的 for 循环,但这显然只返回每个列表的最后一个值,因为一个 for 循环在另一个循环开始之前完成。这不是一个解决我的问题的问题,我而是在寻找一些代码来提高编写代码的技能!