【发布时间】:2018-07-25 12:15:47
【问题描述】:
我有一个这样的列表:
residL=['M', 'P', 'P', 'M', 'L', 'S', 'G', 'L', 'L', 'A', 'R', 'L', 'V', 'K', 'L', 'L', 'L', 'G', 'R', 'H', 'G', 'S', 'A', 'L', 'H', 'W', 'R', 'A', 'A', 'G', 'A', 'A', 'T', 'V', 'L', 'L', 'V', 'I', 'V', 'L', 'L', 'A', 'G', 'S', 'Y', 'L', 'A', 'V', 'L', 'A']
期望的输出:
residL = ['M', 'P', 'P', 'M', 'L', 'S', 'G', 'L', 'L', 'A\n10', 'R', 'L', 'V', 'K', 'L', 'L', 'L', 'G', 'R', 'H\n20', 'G', 'S', 'A', 'L', 'H', 'W', 'R', 'A', 'A', 'G\n30', 'A', 'A', 'T', 'V', 'L', 'L', 'V', 'I', 'V', 'L\n40', 'L', 'A', 'G', 'S', 'Y', 'L', 'A', 'V', 'L', 'A\n50']
我可以用这段代码得到这个输出:
for i in range(9,len(residL), 10):
residL[i] = '%s\n%i'%(residL[i], i+1)
但我想花哨,所以我尝试了切片运算符:
residL[9::10] = [x+'\n%i'%(residL.index(x)+1) for x in residL[9::10]]
我得到了一个奇怪的结果:
residL = ['M', 'P', 'P', 'M', 'L', 'S', 'G', 'L', 'L', 'A\n10', 'R', 'L', 'V', 'K', 'L', 'L', 'L', 'G', 'R', 'H\n20', 'G', 'S', 'A', 'L', 'H', 'W', 'R', 'A', 'A', 'G\n7', 'A', 'A', 'T', 'V', 'L', 'L', 'V', 'I', 'V', 'L\n5', 'L', 'A', 'G', 'S', 'Y', 'L', 'A', 'V', 'L', 'A\n10']
我想知道如何修复它。只是为了学习。 :)
【问题讨论】:
-
如果您为示例选择较小的列表和切片,这将更容易阅读。不过这个问题没有其他问题,所以你有我的支持。
-
lst.index(x)返回x在lst中第一次 出现的索引! -
我总是忘记这个 -_- 谢谢!