我试图使用OpenCV实时绘制来自摄像机的一些数据.但是,实时绘图(使用matplotlib)似乎不起作用.
我把这个问题分成了这个简单的例子:
fig = plt.figure()
plt.axis([0, 1000, 0, 1])
i = 0
x = list()
y = list()
while i < 1000:
temp_y = np.random.random()
x.append(i)
y.append(temp_y)
plt.scatter(i, temp_y)
i += 1
plt.show()
Run Code Online (Sandbox Code Playgroud)
我希望这个例子可以单独绘制1000个点.实际发生的是窗口弹出第一个点显示(确定),然后在填充图表的其余部分之前等待循环完成.
有什么想法,为什么我没有看到一次填充一个点?
我有一个包含20000个列表的列表.我使用每个列表的第3个元素作为标志.我希望在此列表上执行一些操作,只要至少有一个元素的标志为0,它就像:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Run Code Online (Sandbox Code Playgroud)
在开始时,所有标志都是0.我使用while循环来检查至少一个元素的标志是否为0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Run Code Online (Sandbox Code Playgroud)
如果check(my_list)返回True,那么我继续处理我的列表:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Run Code Online (Sandbox Code Playgroud)
实际上,当我迭代它时,我想删除my_list中的一个元素,但是当我迭代它时,我不允许删除项目.
原始的my_list没有标志:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Run Code Online (Sandbox Code Playgroud)
因为我迭代它时无法删除元素,所以我发明了这些标志.但是它my_list包含很多项,并且while循环在每个for循环中读取所有项,并且它会消耗大量时间!你有什么建议吗?
许多Python程序员可能没有意识到while循环和for循环的语法包含一个可选else:子句:
for val in iterable:
do_something(val)
else:
clean_up()
Run Code Online (Sandbox Code Playgroud)
该else子句的主体是某些清理操作的好地方,并且在循环的正常终止时执行:即,退出循环return或break跳过该else子句; continue执行后退出.我知道这只是因为我只是看着它(再次),因为我永远记得当该else子句被执行.
总是?关于循环的"失败",顾名思义?定期终止?即使循环退出return?如果不抬头,我永远无法完全确定.
我责怪我对关键词选择的持续存在的不确定性:我发现else这种语义非常缺乏统一性.我的问题不是"为什么这个关键字用于此目的"(我可能会投票关闭,但只有在阅读了答案和评论后),但我怎么能想到else关键字,以便它的语义有意义,我因此能记得吗?
我确信对此有相当多的讨论,我可以想象选择是为了与try语句的else:条款(我也必须查找)保持一致,并且目标是不添加到列表中Python的保留字.也许选择的理由else将澄清其功能并使其更令人难忘,但我将名称与功能联系起来,而不是在历史解释本身之后.
这个问题的答案,我的问题简要地作为副本被关闭,包含了很多有趣的背景故事.我的问题有一个不同的焦点(如何连接else关键字选择的特定语义),但我觉得应该有一个链接到这个问题的某个地方.
在下面的程序中,如果我$foo在第一个if语句中将变量设置为值1 ,那么它的作用就是在if语句之后记住它的值.但是,当我将同一个变量设置if为while语句内部的值2时,它在while循环之后就被遗忘了.它的行为就像我$foo在while循环中使用某种变量的副本而我只修改那个特定的副本.这是一个完整的测试程序:
#!/bin/bash
set -e
set -u
foo=0
bar="hello"
if [[ "$bar" == "hello" ]]
then
foo=1
echo "Setting \$foo to 1: $foo"
fi
echo "Variable \$foo after if statement: $foo"
lines="first line\nsecond line\nthird line"
echo -e $lines | while read line
do
if [[ "$line" == "second line" ]]
then
foo=2
echo "Variable \$foo updated to $foo inside if inside while loop"
fi
echo "Value …Run Code Online (Sandbox Code Playgroud) 所以Scala应该和Java一样快.我正在重新审视我最初用Java解决的Scala中的一些Project Euler问题.具体问题5:"从1到20的所有数字均可被整除的最小正数是多少?"
这是我的Java解决方案,在我的机器上完成需要0.7秒:
public class P005_evenly_divisible implements Runnable{
final int t = 20;
public void run() {
int i = 10;
while(!isEvenlyDivisible(i, t)){
i += 2;
}
System.out.println(i);
}
boolean isEvenlyDivisible(int a, int b){
for (int i = 2; i <= b; i++) {
if (a % i != 0)
return false;
}
return true;
}
public static void main(String[] args) {
new P005_evenly_divisible().run();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我对Scala的"直接翻译",需要103秒(147倍!)
object P005_JavaStyle {
val t:Int = 20;
def run {
var …Run Code Online (Sandbox Code Playgroud) 我想编写一个Bash脚本来处理文本,这可能需要一个while循环.
例如,C中的while循环:
int done = 0;
while(1) {
...
if(done) break;
}
Run Code Online (Sandbox Code Playgroud)
我想写一个与之等效的Bash脚本.但我通常使用的和我读过的所有经典例子都表明:
while read something;
do
...
done
Run Code Online (Sandbox Code Playgroud)
它没有提供任何有关如何做的帮助while(1){}和break;,这是明确界定,并广泛应用于C,和我没有为标准输入读取数据.
任何人都可以帮助我使用上述C代码的Bash等价物吗?
do whileSQL Server 2008中是否有实现循环的方法?
我在这里发现了类似的问题,但没有我满意的答案.所以再次重述这个问题 -
我有一项需要定期完成的任务(比如每隔1分钟).使用Timertask&Timer执行此操作的优势是什么,而不是创建一个具有无限循环睡眠的新线程?
使用timertask-的代码段 -
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Run Code Online (Sandbox Code Playgroud)
使用Thread和sleep的代码片段 -
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Run Code Online (Sandbox Code Playgroud)
如果逻辑执行时间超过间隔时间,我真的不必担心是否会错过某些周期.
请评论这个..
更新:
最近我发现使用Timer与Thread.sleep()之间存在另一个区别.假设当前系统时间是上午11:00.如果由于某种原因我们将系统时间回滚到上午10:00,则计时器将停止执行任务,直到它到达上午11:00,而Thread.sleep()方法将继续执行任务而不受阻碍.这可能是决定在这两者之间使用什么的主要决策者.
我正在使用VBA的While ... Wend循环.
Dim count as Integer
While True
count=count+1
If count = 10 Then
''What should be the statement to break the While...Wend loop?
''Break or Exit While not working
EndIf
Wend
Run Code Online (Sandbox Code Playgroud)
我不想使用像`while count <= 10 ...这样的条件
我有一个bash脚本,如下所示,
cat filename | while read line
do
read input;
echo $input;
done
Run Code Online (Sandbox Code Playgroud)
但这显然没有给我正确的输出,因为当我在while循环中读取它时,它试图从文件文件名读取,因为可能的I/O重定向.
还有其他方法吗?