从字符串列表中创建新的子字符串列表

3

有没有一种在Python中从字符串列表创建子字符串列表的简单方法?

例子:

原始列表:['abcd','efgh','ijkl','mnop']

子字符串列表:['bc','fg','jk','no']

我知道可以用一个简单的循环实现,但是在Python中是否有更简单的方法(也许是一行代码)?


可能有许多子字符串。你只展示了从索引[1-2]开始的部分... 你有具体的案例吗? - rocker_raj
4个回答

4

使用切片列表推导式

>>> lis = ['abcd','efgh','ijkl','mnop']
>>> [ x[1:3] for x in lis]
['bc', 'fg', 'jk', 'no']

切片:

>>> s = 'abcd'
>>> s[1:3]      #return sub-string from 1 to 2th index (3 in not inclusive)
'bc'

真是该死,比我快了一点点! :) - Henrik Andersson
1
谢谢,它有效 :) (由于某种原因,在11分钟内我无法接受您的答案) - ala

1

通过切片和列表推导式的混合使用,您可以像这样完成它

listy = ['abcd','efgh','ijkl','mnop']
[item[1:3] for item in listy]
>> ['bc', 'fg', 'jk', 'no']

1
你可以使用一行列表推导式
使用切片,以及相对位置,您可以修剪每个项目的第一个和最后一个字符。
>>> l = ['abcd','efgh','ijkl','mnop']
>>> [x[1:-1] for x in l]
['bc', 'fg', 'jk', 'no']

如果您需要多次执行此操作,请考虑使用函数:

def trim(string, trim_left=1, trim_right=1):
    return string[trim_left:-trim_right]

def trim_list(lst, trim_left=1, trim_right=1):
    return [trim(x, trim_left, trim_right) for x in lst] 

>>> trim_list(['abcd','efgh','ijkl','mnop'])
['bc', 'fg', 'jk', 'no']

0
如果你想在一行代码中完成这个任务,可以尝试这样做:
>>> map(lambda s: s[1:-1], ['abcd','efgh','ijkl','mnop'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接