You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python2.7转3.9时zip相关代码报错:字符串无法用&运算符

解决Python3中字符串无法使用&按位与的问题

问题根源很明确:Python2里的str本质是字节串,支持&按位与操作;但Python3里的str是Unicode字符串,不再支持这个运算符,这才是报错的核心(和zip转不转list没关系)。以下是几种针对性的解决方法:

方法1:单字符字符串转整数处理

如果mask_1里的元素都是单字符字符串,直接把字符转成ASCII整数做按位与,再转回字符:

mask_1 = np.asarray([chr(ord(w1) & ord(w2)) for w1,w2 in zip(mask_1[::2], mask_1[1::2])])

方法2:字符串转字节串处理

如果字符串是ASCII范围内的多字符内容,先转成bytes类型再执行按位与:

mask_1 = np.asarray([w1.encode('ascii') & w2.encode('ascii') for w1,w2 in zip(mask_1[::2], mask_1[1::2])])

注意:如果字符串包含非ASCII字符,encode('ascii')会报错,这时候需要根据实际编码选择对应的编码格式(比如utf-8),但按位与后的结果可能不符合预期,需谨慎使用。

方法3:利用numpy数组类型转换(更高效)

如果mask_1本身是numpy字符串数组,直接转换数组类型来处理,避免Python循环的开销:

# 把字符串数组转成对应ASCII值的整数数组
mask_int = np.vectorize(ord)(mask_1)
# 两两执行按位与操作
mask_int = mask_int[::2] & mask_int[1::2]
# 转回字符串数组
mask_1 = np.vectorize(chr)(mask_int)

内容的提问来源于stack exchange,提问作者luiz_iniciante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:33:15