length python 多维列表
length python multidimensional list
我在下面的代码中有一个奇怪的错误:
s = MyClass()
f = open(filename, 'r')
nbline = f.readline()
for line in iter(f):
linesplit = line.split()
s.add(linesplit)
f.close()
print(len(s.l))
print(nbline)
两次打印结果不同。为什么?
class 定义是:
class MyClass:
l = []
def add(self, v):
self.l.append(v)
文件格式为:
161
3277 4704 52456568 0 1340 380 425
3277 4704 52456578 1 1330 380 422
3118 4719 52456588 1 1340 390 415
3109 4732 52456598 1 1340 400 420
3182 4743 52456608 1 1350 410 427
3309 4789 52456618 1 1360 420 446
...
对于这个文件,印刷品是:
51020
161
文件包含162行(行数+行数)
如果我调用函数一次没问题,当我调用函数两次或更多次时出现错误(看起来像以前的文件被读取了!!!:/)
尝试以下几行:
(len(列表[第一维]) + len(列表[第二维])) 等...
有点笨拙,但我认为它会做你想做的事
该文件可能有一个或两个尾随换行符。如果 len(s.l) == nbline + 1
或者只是打印 s.l[-3:]
来检查。
首先,感谢您的编辑。
这是一个更好看、更 pythonic 的代码:
s = MyClass()
with open(filename, 'r') as f:
nbline = f.readline()
for line in f:
linesplit = line.split()
s.add(linesplit)
然后确保在 MyClass
中设置 self.l = []
好的问题是 s.l 是一个 class 所有实例共享的变量!!!
我在下面的代码中有一个奇怪的错误:
s = MyClass()
f = open(filename, 'r')
nbline = f.readline()
for line in iter(f):
linesplit = line.split()
s.add(linesplit)
f.close()
print(len(s.l))
print(nbline)
两次打印结果不同。为什么?
class 定义是:
class MyClass:
l = []
def add(self, v):
self.l.append(v)
文件格式为:
161
3277 4704 52456568 0 1340 380 425
3277 4704 52456578 1 1330 380 422
3118 4719 52456588 1 1340 390 415
3109 4732 52456598 1 1340 400 420
3182 4743 52456608 1 1350 410 427
3309 4789 52456618 1 1360 420 446
...
对于这个文件,印刷品是: 51020 161
文件包含162行(行数+行数)
如果我调用函数一次没问题,当我调用函数两次或更多次时出现错误(看起来像以前的文件被读取了!!!:/)
尝试以下几行:
(len(列表[第一维]) + len(列表[第二维])) 等...
有点笨拙,但我认为它会做你想做的事
该文件可能有一个或两个尾随换行符。如果 len(s.l) == nbline + 1
或者只是打印 s.l[-3:]
来检查。
首先,感谢您的编辑。
这是一个更好看、更 pythonic 的代码:
s = MyClass()
with open(filename, 'r') as f:
nbline = f.readline()
for line in f:
linesplit = line.split()
s.add(linesplit)
然后确保在 MyClass
self.l = []
好的问题是 s.l 是一个 class 所有实例共享的变量!!!