簡體   English   中英

從字符串列表創建新的子字符串列表

[英]Create new list of substrings from list of strings

python中是否有一種簡單的方法可以從字符串列表中創建子字符串列表?

例子:

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

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

我知道這可以通過一個簡單的循環來實現,但是在 python 中是否有更簡單的方法(也許是單行)?

使用slicinglist comprehension

>>> 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'

結合切片和列表理解,你可以這樣做

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

您可以使用單行列表理解

使用切片和相對位置,您可以修剪每個項目中的第一個和最后一個字符。

>>> 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']

如果你想在一行中做到這一點,你可以試試這個:

>>> map(lambda s: s[1:-1], ['abcd','efgh','ijkl','mnop'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM