个如果要垫短线0.0的下面是一个办法 - 垫满= 0.0的,那么只切片领先显著部分:
data = """0.1 0.3 0.4 0.3
0.2 02. 1.2 -0.2
0.1 -1.22 0.12 9.2 0.2 0.2
0.3 -1.42 0.2 6.2 0.9 0.88
0.3 -1.42 0.12 1.1 0.1 0.88 0.06 0.14
4""".splitlines()
maxcols = int(data[-1])*2
emptyvalue = 0.0
pad = [emptyvalue]*maxcols
for line in data[:-1]:
# get the input data values, converted from strings to floats
vals = map(float, line.split())
# pad the input with default values, then only take the first maxcols values
vals = (vals + pad)[:maxcols]
# show our work in a nice table
print "[" + ','.join("%s%.2f" % (' ' if v>=0 else '', v) for v in vals) + "]"
打印
[ 0.10, 0.30, 0.40, 0.30, 0.00, 0.00, 0.00, 0.00]
[ 0.20, 2.00, 1.20,-0.20, 0.00, 0.00, 0.00, 0.00]
[ 0.10,-1.22, 0.12, 9.20, 0.20, 0.20, 0.00, 0.00]
[ 0.30,-1.42, 0.20, 6.20, 0.90, 0.88, 0.00, 0.00]
[ 0.30,-1.42, 0.12, 1.10, 0.10, 0.88, 0.06, 0.14]
我认为我理解你想要的东西,直到你说'Array [i] [n * 2]'。这看起来像是一维数组的一维数组。一个二维数组被标记为'a [i,j]',并且它的形状类似于'(i,n * 2)'。那是你想要的吗? – abarnert 2014-09-28 02:46:04
是的,对不起,我很困惑C++语法与python语法 – Jesus 2014-09-28 03:40:23
这不仅仅是语法问题。 C++根本就没有2D数组;它有数组数组(当然,它有1D N * M数组,你可以手动跨步)。如果你真的想要像C++数组数组一样,首先你不会有这个问题,因为数组数组不一定是矩形,而是二维数组。 – abarnert 2014-09-28 07:03:11