如何解决如何使用Python slice提取字符串中的位置列表
| 我有两个字符串:a=\'1234512345\'
b=\'abcdefghik\'
我想在字符串\“ a \”中搜索\'1 \'的出现,然后打印与该索引相对应的\“ b \”的位置,即
\'af\'
我可以用
import re
starts=[match.start() for match in re.finditer(re.escape(\'1\'),a)]
发现\'1 \'出现在位置[0,5]。我将如何使用此信息从字符串“ b”中提取“ af”解决方法
您可以执行以下操作:
\'\'.join(b[x] for x in starts)
但我建议改为:
a=\'1234512345\'
b=\'abcdefghik\'
\'\'.join(y for (x,y) in zip(a,b) if x == \'1\')
,>>> a=\'1234512345\'
>>> b=\'abcdefghik\'
>>> [ j for i,j in zip(a,b) if i==\"1\" ]
[\'a\',\'f\']
,In [11]: a=\'1234512345\'
In [12]: b=\'abcdefghik\'
In [16]: \'\'.join(b[i] for i,num in enumerate(a) if num==\'1\')
Out[16]: \'af\'
或者,如果您确实要使用正则表达式:
In [21]: \'\'.join(b[match.start()] for match in re.finditer(re.escape(\'1\'),a))
Out[21]: \'af\'
,import re
a=\'1234512345\'
b=\'abcdefghik\'
starts= [ b[i] for i in [ match.start() for match in re.finditer(re.escape(\'1\'),a)]]
print \'\'.join(starts)
,\"\".join(b[i] for i in range(min(len(a),len(b))) if a[i] == \"1\")
,像这样?
a=\'1234512345\'
b=\'abcdefghik\'
for char in a:
n = -1
for subc in a:
n=n+1
if subc == char:
print b[n],print
产生:
a f
b g
c h
d i
e k
a f
b g
c h
d i
e k
,如果您必须对a
的几个值重复执行此操作,则((O(n))构建字典比重复遍历a
和b
(O(n * n))效率更高。
>>> a=\'1234512345\'
>>> b=\'abcdefghik\'
>>> from collections import defaultdict
>>> D=defaultdict(str)
>>> for i,b):
... D[i]+=j
...
>>> D[\'1\']
\'af\'
>>> D[\'2\']
\'bg\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。