我测试以下代码:
for i in range(3):
for i in range(3,5):
print "inner i: %d"%(i)
print "outer i: %d"%(i)
Run Code Online (Sandbox Code Playgroud)
输出是:
inner i: 3
inner i: 4
outer i: 4
inner i: 3
inner i: 4
outer i: 4
inner i: 3
inner i: 4
outer i: 4
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在外循环中i是4但外循环仍然运行3次.看来,该变量i的print "outer i: %d"%(i)行是i在内部循环,但是当进入到for i in range(3)它使用外循环的我.
有谁能解释一下?现在对我来说有点困惑.
我有一个文件,一个字段是一个时间戳,比如20141028 20:49:49,我想获取小时20,所以我使用system命令:
hour=system("date -d\""$5"\" +'%H'")
Run Code Online (Sandbox Code Playgroud)
时间戳是我文件中的第五个字段,所以我使用了$5. 但是当我执行程序时,我发现上面的命令只是输出20并返回 0 所以hour is 0 but not 20,所以我的问题是如何获取时间戳中的小时?
split我知道一种使用函数两次的方法,如下所示:
split($5, vec, " " )
split(vec[2], vec2, ":")
Run Code Online (Sandbox Code Playgroud)
但这种方法有点低效而且丑陋。
那么还有其他解决方案吗?谢谢
我写了以下代码:
awk -F"\t" '{
a[1]=1; a[2]=2; a[3]=3; a[4]=4; a[5]=5;
delete a[4];
print "len", length(a);
for( i =1; i<=length(a); i++)
print i"\t"a[i]
for( i in a)
print i"\t"a[i]
}' -
Run Code Online (Sandbox Code Playgroud)
输出是:
len 4
1 1
2 2
3 3
4
5 5
4
5 5
1 1
2 2
3 3
Run Code Online (Sandbox Code Playgroud)
我的问题是因为我删除了第4个元素,并且数组的长度a变为4,所以当我打印数组时,为什么还有5个元素的第4个元素的值变为空白?这是否表示"删除"仅删除该值并且相应的索引仍然存在?
我tf.stack()在tensorflow stack上阅读了文档。页面上有一个示例:
>>> x = tf.constant([1, 4])
>>> y = tf.constant([2, 5])
>>> z = tf.constant([3, 6])
>>> sess=tf.Session()
>>> sess.run(tf.stack([x, y, z]))
array([[1, 4],
[2, 5],
[3, 6]], dtype=int32)
>>> sess.run(tf.stack([x, y, z], axis=1))
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)
Run Code Online (Sandbox Code Playgroud)
我不明白的是第二个例子axis=1。
从结果看来,它首先将三个输入行转换为列
然后将它们沿着拖走axis=1,但是
我认为结果应该是
array([[1,4, 2, 5, 3, 6 ]] dtype=int32 )
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙解释一下吗?
谢谢!