我应该using
在循环内部还是外部使用块?是否有任何合理的性能差异?Graphics
对象的情况有什么不同吗?虽然第二种方法可能看起来更好,但它while
可能是一个长块并降低代码的可读性。
while (i < 100)
{
using(Graphics g = Graphics.FromImage(bitmap)
{
g.DrawImage(...);
}
}
Run Code Online (Sandbox Code Playgroud)
对比
using(Graphics g = Graphics.FromImage(bitmap)
{
while (i < 100) // a long while block
{
// I may use other functions such as g.DrawLine .. or g.DrawText ...
// Moreover while could be a long block
g.DrawImage(...);
}
}
Run Code Online (Sandbox Code Playgroud) 我想绘制多个泊松(使用不同的 lambdas (1:10))
我找到了以下函数来绘制绘图
plot_pois = function(lambda = 5)
{
plot(0:20, dpois( x=0:20, lambda=lambda ), xlim=c(-2,20))
normden <- function(x){dnorm(x, mean= lambda, sd=sqrt(lambda))}
curve(normden, from=-4, to=20, add=TRUE, col=lambda)
}
plot.new()
plot_pois(2)
Run Code Online (Sandbox Code Playgroud)
但我不能在它上面绘制另一个泊松。我试图更改plot
为points
orlines
但它完全改变了情节。我还想为不同的 lambda 值添加一个包含不同颜色的图例。
如果我可以使用 绘制它ggplot
,那将是一个更好的选择。
我想基于定界符拆分大文本。
我用了:
string[] parts = text
.Split(new string[] { Environment.NewLine + "##" }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)
我想知道开始位置(每个部分的字符索引)。我可以搜索循环中的每个部分:
int[] pos = new int[slides.Length];
for (int i = 0; i < slides.Length; i++)
{
pos[i] = i == 0 ? text.IndexOf(slides[i]) : text.IndexOf(slides[i], pos[i-1] + 1);
}
Run Code Online (Sandbox Code Playgroud)
或者,我可以搜索分隔符。我想知道是否有更快更好的解决方案。
我知道Big O和BigΘ的区别,但我发现很少有我需要使用Big O或BigΩ而不是BigΘ的情况.
当给出算法以及运行时间复杂度(平均值,最差值和最佳值)的情况时,我们可以测量算法的运行时间并将其表示为Θ.(请注意算法意味着问题的清晰和一步一步的解决方案,如果我错了,请纠正我)
一方面,仅指出算法的运行时间而不指定案例复杂性是不明确的.另一方面,如果它指的是其中一种情况,那么Big O和BigΩ就会失去它们的应用,因为我们特定于案例,最多或者至少在那里失去意义.如果我们想要粗糙,我们可以简单地计算T(n)或使用Θ.
例如,平均情况下的快速排序算法的时间是Θ(n lg n),并且在最坏的情况下是Θ(n ^ 2)(因为我们可以计算时间T(n)).然而,一些人可以用O(n log n)和O(n ^ 2)来指定它们,但是Θ也是正确且更精确的.
那么我们应该如何或为什么要使用O或Ω作为该算法的运行时间?请不要忘记包含此特定实例的答案.
我不寻求对它们的解释,只是一些我们真正需要Big O而不是BigΘ的真实例子.
我有一个列表,如:
A B B C D D D B E D
Run Code Online (Sandbox Code Playgroud)
我想从列表中删除连续的重复项目以获取
A B C D B E D
Run Code Online (Sandbox Code Playgroud)
如果我尝试Distinct()
,它给了我A B C D E
我有一个字符串列表列表:
List<List<String>> pChain;
Run Code Online (Sandbox Code Playgroud)
它可能有重复的字符串列表(如果它们在相同的顺序中具有相同的字符串,则两个字符串列表相等).我想在主列表中列出每个不同列表的计数.我试过了:
var results = (from t in pChain
group t by new { t }
into g
select new
{
g.Key,
Count = g.Count(),
}).OrderByDescending(x => x.Count).ToList();
foreach (var v in results)
{
ListViewItem lv = listView2.Items.Add(v.Key.ToString());
lv.SubItems.Add(v.Count + "");
}
Run Code Online (Sandbox Code Playgroud)
但它没有将类似的字符串列表分组到一个列表中,也不计算它们.
我想改变这样的字符串:
T h i s i s a t e s t
Run Code Online (Sandbox Code Playgroud)
到:
This is a test
Run Code Online (Sandbox Code Playgroud)
这是我的代码,有效
while ' ' in s:
s = s.replace(' ', '$$')
while ' ' in s:
s = s.replace(' ', '')
while '$$' in s:
s = s.replace('$$', ' ')
Run Code Online (Sandbox Code Playgroud)
但是,有没有简单的解决方案呢?
对于删除所有空格或删除单个空格并保留多个空格有类似的解决方案,但就我而言,我也必须用单个空格替换双空格。
假设我有:
x1 = [1, 2, 3, 4]
x2 = [1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)
我如何将它们组合到点:
points = [[1,1],[2,4], ...]
Run Code Online (Sandbox Code Playgroud) 在 bash 文件中,我得到一个输入参数$1
。它的末尾可能包含一个点,也可能不像 (test.
或test
)
我想test
在这两种情况下都向它添加扩展并test.py
从中创建例如
在python程序中,我想过滤主要是数字的字符串,例如表中的实验结果等。
例如,必须过滤“year 2004 2005 2006”或“dimension 2.343m 3.85m 343.5m”等字符串。
我知道如何检查字符串是否包含数字,any(i.isdigit() for i in str)
但如何计算它们?我可以用循环来做到这一点,但我寻找一个类似的函数来内联完成它。