如何移除嵌套列表中每个子列表首元素的最后4个字符?
问题解决:修改嵌套列表中指定字符串内容
你的需求完全可以实现,先看你之前代码的问题:newlist= [sub[:][: -1] for sub in list] 这段代码是对每个子列表做整体切片,去掉了子列表的最后一个元素(也就是'X'),根本没处理第一个字符串的内容,所以才得到只有单个元素的子列表。
正确实现方式
列表推导式(简洁写法)
直接遍历每个子列表,对第一个元素做字符串切片(移除最后4个字符),同时保留第二个元素:
lst = [['ABC, CN', 'X'], ['DCS, BA', 'X'], ['SCS, TW', 'X'], ['SFA, GW', 'X']] newlist = [[item[0][:-4], item[1]] for item in lst]
执行后得到的结果就是你想要的:
[['ABC', 'X'], ['DCS', 'X'], ['SCS', 'X'], ['SFA', 'X']]
循环写法(更易理解)
如果对列表推导式不太熟悉,用普通循环也能实现:
lst = [['ABC, CN', 'X'], ['DCS, BA', 'X'], ['SCS, TW', 'X'], ['SFA, GW', 'X']] newlist = [] for sub in lst: # 截取第一个字符串的前n-4个字符 trimmed_str = sub[0][:-4] # 拼接成新的子列表并添加到结果中 newlist.append([trimmed_str, sub[1]])
关键说明
item[0][:-4]:item[0]取子列表的第一个字符串,[:-4]表示从开头取到倒数第4个字符之前的位置,刚好移除最后4个字符(比如'ABC, CN'去掉最后4个字符就是'ABC')。- 如果你担心某些子列表的第一个字符串长度不足4,可以加个判断避免报错,比如:
[[item[0][:-4] if len(item[0])>=4 else item[0], item[1]] for item in lst]
内容的提问来源于stack exchange,提问作者abh
相关产品推荐
相关产品推荐

