Victory belongs to those that believe in it the most, and believe in it the longest. ——《珍珠港》
胜利属于那些信念坚定、永不动摇的人。
问题
1 2 有如下数组,请计算并打印出每个字符串中排列在任意x前面的所有y的个数。 arr = ['xxyyxyyyyyxxx', 'yyxxxxy', 'xyyyxxyx', 'xxxx', 'xxxyyy']
解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import redef change_s (s_list ): res_list = [] pattern = re.compile (r'(y+)x' ) for i in s_list: res = pattern.findall(i) res_list.append(len ('' .join(res))) return res_list arr = ['xxyyxyyyyyxxx' , 'yyxxxxy' , 'xyyyxxyx' , 'xxxx' , 'xxxyyy' ] print (change_s(arr))>>>[7 , 2 , 4 , 0 , 0 ]
思路
1 2 3 4 5 用正则匹配字符串中所有以x结尾的任意y字符串。 compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。 findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 将每个字符串中符合规则的y字符串列表拼接成字符串,计算每个字符串y的个数并添加至列表中,最后返回列表。