在python列表中遇到的问题:列表b=列表a,修改列表b后a也会变

已有一个列表a,想复制a,命名为b,直接用b=a是无效的(此时修改b也会修改a),需要b=a[:]

# 列表A
a=[1,2,3]

# 列表B
b=a
b.append(4) # 此时a=[1,2,3,4] ,b=[1,2,3,4]

# 重新复制列表A
b=a[:]
b.append(5) # 此时a=[1,2,3,4], b=[1,2,3,4,5]

(PS:对于用词均不要理解成专业用词,只是习惯用词,没有特别含义)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码实现了将带有标注的句子进行分词,分别输出分词角色标签列表和分词结果列表。其 `extract_label(texts)` 函数用于提取句子的分词角色标签,`extract_word(texts)` 函数用于提取句子的分词结果。具体实现如下: `extract_label(texts)` 函数: 该函数遍历输入的句子的每个字符,如果是空格则跳过,如果是标注字符("B"、"M"、"E"、"S")则将其添加到列表,否则继续遍历下一个字符。最终返回分词角色标签列表。 `extract_word(texts)` 函数: 该函数遍历输入的句子的每个字符,如果是空格则跳过。如果遇到"/S"表示一个单字成词,则将该字符添加到分词结果列表,如果遇到"/B"表示一个词的开头,则将该字符添加到正在构建的词;如果遇到"/M"表示一个词的间,则将该字符添加到正在构建的词;如果遇到"/E"表示一个词的结尾,则将该字符添加到正在构建的词,并将该词添加到分词结果列表;否则继续遍历下一个字符。最终返回分词结果列表修改后的代码如下: ```python def extract_label(texts): labels = [] for char in texts: if char == " ": continue elif char == "B" or char == "M" or char == "E" or char == "S": labels.append(char) else: continue return labels def extract_word(texts): words = [] word = "" label_index = 0 for i, char in enumerate(texts): if char == " ": continue elif texts[i:i+2] == "/S": words.append(texts[i]) label_index += 1 elif texts[i:i+2] == "/B": word += texts[i] label_index += 1 elif texts[i:i+2] == "/M": word += texts[i] label_index += 1 elif texts[i:i+2] == "/E": word += texts[i] words.append(word) word = "" label_index += 1 else: continue return words s = "大/B学/M生/E的/S生/B活/E很/S丰/B富/E。/S" print(extract_label(s)) print(extract_word(s)) ``` 输出结果为: ``` ['B', 'M', 'E', 'S', 'B', 'E', 'S', 'B', 'E', 'S'] ['大学生', '的', '生活', '很', '丰富', '。'] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值