我经常发现自己想要查看目录中的一堆图.我通常会这样做:
for PLT in *.png; do bash -c "display ${PLT} &" ; done
Run Code Online (Sandbox Code Playgroud)
以来
for PLT in *.png; do display ${PLT} & ; done #doesn't work :-(
Run Code Online (Sandbox Code Playgroud)
对于这种事情,是否有更容易/更少丑陋/更好的习语?我也尝试在括号中包含命令,但这也不起作用(它只打开一个图)...
for PLT in *.png; do ( display ${PLT} ) ; done
Run Code Online (Sandbox Code Playgroud)
编辑
请注意,我在交互式终端中工作.如果我编写一个脚本并将第二个for循环分成多行,它就可以正常工作......
将循环表达为列表推导是很常见的:
mylist=[]
for i in range(30):
mylist.append(i**2)
Run Code Online (Sandbox Code Playgroud)
这相当于:
mylist = [i**2 for i in range(30)]
Run Code Online (Sandbox Code Playgroud)
是否有任何一种机制可以通过while循环完成这种迭代?
mylist=[]
i=0
while i<30:
mylist.append(i**2)
i+=1
Run Code Online (Sandbox Code Playgroud)
当然,通过这个简单的例子,很容易转换为for循环,然后转换为列表理解,但是如果它不那么容易呢?
例如
mylist = [i**2 while i=0;i<30;i++ ]
Run Code Online (Sandbox Code Playgroud)
(当然上面的伪代码不是合法的python)(itertools想到这种事情,但我不太清楚这个模块.)
编辑
一个(非常简单)的例子,我认为一段时间的理解是有用的将是:
dt=0.05
t=0
mytimes=[]
while t<maxtime:
mytimes.append(t)
t+=dt
Run Code Online (Sandbox Code Playgroud)
这可以转化为:
dt=0.05
t=0
nsteps=maxtime/dt
mytimes=[]
for t in (i*dt for i in xrange(nsteps)):
mytimes.append(t)
Run Code Online (Sandbox Code Playgroud)
可以写成(复合)列表理解:
nsteps=maxtime/dt
mytimes=[t for t in (i*dt for i in xrange(nsteps)]
Run Code Online (Sandbox Code Playgroud)
但是,我认为,while循环是MUCH更容易阅读(而不是有索引错误)另外,如果你的对象(DT)支持"+"而不是"*"?如果maxtime循环的每次迭代以某种方式改变,可能会发生更复杂的例子......
我今天遇到的代码看起来有点像这样:
subroutine foo()
real blah
integer bar,k,i,j,ll
integer :: n_called=1
save integer
...
end
Run Code Online (Sandbox Code Playgroud)
看起来这里的意图可能是save n_called,但是即使是一个有效的语句来保存所有整数 - 或者它是否隐含地声明了一个名为integer并保存它的变量?
有没有办法使用文件类型检查文件名参数argparse?如果我可以创建正确类型的容器对象,似乎可以通过 type 或choices 关键字来完成。
我期待传入的文件类型(例如,file.txt),argparse如果文件类型不正确(例如),我想给出其自动消息.txt。例如,argparse 可能会输出
usage: PROG --foo filename etc... error: argument filename must be of type *.txt.
Run Code Online (Sandbox Code Playgroud)
也许我们可以尝试检测文件名字符串不以“.txt”结尾,而不是检测错误的文件类型,但这需要复杂的容器对象。
我正在从具有以下格式的数据文件中绘制 gnuplot 图表:
01 value_1_1 value_2_1
02 value_1_1 value_2_1
...
01 value_1_n value_2_n
Run Code Online (Sandbox Code Playgroud)
使用该命令:
plot "action.dat" using 2:xtic(1) with boxes ls 1 title "First title",\
"action.dat" using 3:xtic(1) with boxes ls 2 title "Second title";
Run Code Online (Sandbox Code Playgroud)
X tic 标签从第一列加载。当终端太小时,标签开始重叠。如果 x tic 标签与前一个标签重叠,如何隐藏它?或者,至少,我怎样才能只绘制第 n 个标签?
我试过做这样的事情
set xtics 10 rotate by -90
Run Code Online (Sandbox Code Playgroud)
但失败了。
你能帮我转换一下Python列表:
[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
Run Code Online (Sandbox Code Playgroud)
所以:
(1, 'a')是索引0
(2, 'b'), (2, 'c') 都是索引1
(3, 'd'), (3, 'e') 都是索引2
简单地说,元素[0]相等的所有元组都具有相同的索引.
谢谢,
这是python中IDLE2中的代码和错误.
我需要以有序的方式将每个"data"元素作为键和值"otro"包含在内.那么"数据"和"otro"就是38个字符串的列表,"dik"就是字典.
>>> for i in range(len(otro)+1):
dik[dato[i]] = otro[i]
Traceback (most recent call last):
File "<pyshell#206>", line 2, in <module>
dik[dato[i]] = otro[i]
IndexError: list index out of range
>>>
Run Code Online (Sandbox Code Playgroud)
这个问题是范围(0,38)输出 - >(0,1,2,3 ... 37)并且它都是凌乱的
我只是注意到一些奇怪的东西
在python中,如果我这样做
>>> k = 1
>>> j = 2
>>> print k,",",j
1 , 2 # prints this
Run Code Online (Sandbox Code Playgroud)
我希望它会是:
1,2
Run Code Online (Sandbox Code Playgroud)
为什么这两者之间有空间,而
>>> print str(k) + "," + str(j)
1,2
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试对先前捕获的Pcap文件进行排序,我想构建一个ip源和目标列表,因此我可以对它们进行计算.
我试图使用搜索功能搜索pcap文件,但这有失败的IP地址,任何想法?
最终我希望代码使用下面的代码来实时嗅探,然后在ip地址的情况下构建一个列表.
newpkt = sniff(count = 100, prn=lambda x:x.sprintf("{IP:%IP.src% -> %IP.dst%\n} {Raw:%Raw.load%\n}"))
Run Code Online (Sandbox Code Playgroud) 我在Python 2.7中有这个代码我一直在努力,而且我被卡住了.我试图从去
["bob","sally","jim"])
到
'bob<>sally<>jim'
这是我到目前为止所拥有的.
def long_winded(my_str):
result = []
for i in my_str:
result += i + "<>"
return result
print long_winded(["sally","bob","jim"])
Run Code Online (Sandbox Code Playgroud)