【发布时间】:2016-09-09 15:03:40
【问题描述】:
我使用python 2.7,我想减少和优化这些代码行但是我有一个问题,有人可以帮我吗?
我有这个名单B = [[0, Act1, XX1, u'P-Um'],.....[0, Act100, ZZ30, u'D- MOM']]
- 我只想取 B 的第四个值
- 只取连字符后面的部分和有时需要的空格
- 带回 B
现在我写了这段代码
for i in range(len(B)):
x.append(B[i][3])
A = [i.split('-',1)[1] for i in x]
#A=[u'Um', u' LY', u' NO', ......, u' MOM']
for i in range(len(B)):
A[i].lstrip()
p = []
for i in range(len(B)):
p.append(A[i].lstrip())
for i in range(len(B)):
B[i][3] = p[i]
当我试图在下面缩短它时,我有两个错误。
#Short version
for i in range(len(B)):
x.append(B[i][3])
A = [i.split('-',1)[1], x] #Error:AttributeError: 'int' object has no attribute 'split'
B[i][3].append(A[i].lstrip()) #Error:AttributeError: 'unicode' object has no attribute 'append'
我尝试了很多方法来解决错误,但仍然无法正常工作。你能帮忙吗?您认为可以使顶部更短而不会出错吗?
非常感谢您。
【问题讨论】:
-
在使用嵌套循环时停止使用
i作为变量的名称,你总是会覆盖它的值 -
由于使用了一个字母的变量名,这段代码有点难以理解。最好为变量使用描述性名称(通常)。
-
您的列表甚至不起作用:有变量、整数和字符串...然后,您正在拆分
range返回的索引:没办法,那么您将附加到您的一个unicode 列表对象:也没有办法......不清楚...... -
请提供几个具体的输入/输出列表。我无法让你的第一个代码工作。
标签: python