python中的列表,做如下如理:取出部分连续的字符串进行合并,并放入一个新的列表,并返回这几个字符串在原列表中的索引,要求取出的字符串以B开头,结束的那个字符串以I开头,并且结束的字符串的下一个字符串要以B或者O开头,若字符串以B开头,下一个便是以B或者O开头,则只取出B,例如,对于列表a = ['B-ORG', 'I-ORG', 'I-ORG', 'O-TITLE', 'B-TITLE', 'I-TITLE', 'O-TITLE', 'O','B-ORG','O'],则返回列表b=['B-ORGI-ORGI-ORG','B-TITLEI-TITLE','B-ORG']和列表c=[0,1,2,4,5,8]
时间: 2023-09-01 12:07:27 浏览: 88
我就是这样学习Python中的列表
可以使用循环和判断来完成这个任务。具体实现步骤如下:
1. 定义两个空列表 b 和 c,用于存放合并后的字符串和对应的索引。
2. 定义一个变量 start_index 用于记录每个连续字符串的起始位置,初始值为 0。
3. 遍历列表 a,对于每个字符串:
1. 如果以 B 开头,则更新 start_index 的值为当前索引。
2. 如果以 I 开头,则继续往下遍历。
3. 如果以 O 开头,则检查前一个字符串是否以 B 或者 I 开头,如果是,则将前面的连续字符串合并,并将合并后的字符串和起始索引分别添加到 b 和 c 中。
4. 如果当前字符串是最后一个字符串,或者下一个字符串以 B 或者 O 开头,则将前面的连续字符串合并,并将合并后的字符串和起始索引分别添加到 b 和 c 中。
4. 返回列表 b 和 c。
具体实现代码如下:
```python
def merge_strings(a):
b = [] # 用于存放合并后的字符串
c = [] # 用于存放合并后的字符串在原列表中的索引
start_index = 0 # 记录每个连续字符串的起始位置
for i in range(len(a)):
if a[i].startswith('B'):
start_index = i
elif a[i].startswith('O'):
if i == len(a) - 1 or a[i + 1].startswith('B') or a[i + 1].startswith('O'):
merged_str = ''.join(a[start_index:i+1])
b.append(merged_str)
c.append(start_index)
else:
continue
return b, c
a = ['B-ORG', 'I-ORG', 'I-ORG', 'O-TITLE', 'B-TITLE', 'I-TITLE', 'O-TITLE', 'O','B-ORG','O']
b, c = merge_strings(a)
print(b) # 输出: ['B-ORGI-ORGI-ORG', 'B-TITLEI-TITLE', 'B-ORG']
print(c) # 输出: [0, 1, 2, 4, 5, 8]
```
阅读全文