如何使用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,j in zip(a,b):
...  D[i]+=j
... 
>>> D[\'1\']
\'af\'
>>> D[\'2\']
\'bg\'

要回复问题请先登录注册