题目:
指定字符串为 abc120dfg09
识别该字符串中所有数字,并打印该数字在该字符串中的位置(索引)。
1.常规解法:字符串迭代
符合条件的结果就直接打印出来。
from string import digits
data = "abc120dfg09"
for i in range(len(data)):
if data[i] in digits:
print(f'索引:{i},数字:{data[i]}')
2.进阶解法:对输出结果保存
先将结果保存,最终一次性打印结果。
2.1 采用元组组成的列表保存
每个元组保管一对相应的索引和数字型字符,多个元组构成列表。
from string import digits
data = "abc120dfg09"
lst = []
for i in range(len(data)):
if data[i] in digits:
lst.append((i,data[i]))
print(lst)
2.2 采用字典保存
索引作为字典的键,字符作为字典的值(字符可能存在重复,不能作为键)。
from string import digits
data = "abc120dfg09"
dct = {}
for i in range(len(data)):
if data[i] in digits:
dct[i] = data[i]
print(dct)
3.高手解法:正则表达式
import re
data = "abc120dfg09"
p = [(i.start(),i.group()) for i in re.finditer(r'd',data)]
print(p)
参考链接:https://xue.cn/hub/reader?bookId=1&path=the-craft-of-selfteaching/notes_7.ipynb