如何删除列表中元素的最后2个字符?

时间:2013-02-28 21:10:13

标签: python python-2.7

我正在尝试删除下面列表中每个项目的最后两位数字。

keys = ['2013', '1101', '1201', '1301', '1401', '1402', '1403', '2100', '2150', '3201', '5201', '5301', '9810', '9820', '9830', '2013', '1101', '1201', '1202', '1301', '1304', '1401', '1402', '1403', '2100', '2150', '3401', '5201', '5301', '9810', '9820', '9830', '2013', '1101', '5201', '2013', '1101', '1201', '1401', '1402', '1403', '2100', '5201', '5301', '5402', '9810', '9820', '9830', '2013']

for n,k in keys:
  keys[n] = keys[n][0]+keys[n][1]

我一直得到ValueError:解压缩的值太多了

2 个答案:

答案 0 :(得分:5)

这里不需要正则表达式...简单的切片就可以解决问题:

keys = [k[:-2] for k in keys]

这实际上并不存在,但可以轻松制作:

keys[:] = [k[:-2] for k in keys]

答案 1 :(得分:1)

您收到错误,因为keys是长度为4的字符串列表,所以

for n,k in keys:

无效,因为长 4 的字符串无法解压缩到 2 变量nk

无论如何,这是另一种选择:

map(operator.itemgetter(slice(-2)), keys)