问题描述:

Split the string into pairs of two characters. If the string contains an odd number of characters, then the missing second character of the final pair should be replaced with an underscore ('_').

(将一个字符串两两分开,最后如果剩一个就加上“_”重新组成一对)

Input: A string.

Output: An iterable of strings.

def split_pairs(a):# your code herereturn Noneif __name__ == '__main__':print("Example:")print(list(split_pairs('abcd')))# These "asserts" are used for self-checking and not for an auto-testingassert list(split_pairs('abcd')) == ['ab', 'cd']assert list(split_pairs('abc')) == ['ab', 'c_']assert list(split_pairs('abcdf')) == ['ab', 'cd', 'f_']assert list(split_pairs('a')) == ['a_']assert list(split_pairs('')) == []print("Coding complete? Click 'Check' to earn cool rewards!")

对我来说这有点难,split不能用,那就只能用索引,最终有了以下比较繁琐的方法:

def split_pairs(a):# your code herelst=[]lst_index=0if len(a)%2==0:for i in range(len(a)//2):lst.append(a[lst_index:lst_index+2])lst_index+=2elif len(a)%2==1:for i in range(len(a)//2):lst.append(a[lst_index:lst_index+2])lst_index+=2lst.append(a[-1]+'_')return lst

其他解决方案:

一:对我上面想法的一个更优版。

def split_pairs(a):# your code hereif a == '':return []if len(a) % 2 == 1:a = a + "_"b = [a[i:i+2] for i in range(0, len(a), 2)]return b

二:很简单的一行,但是用了zip,一个对我来说新的知识点。

def split_pairs(a):return [ch1+ch2 for ch1,ch2 in zip(a[::2],a[1::2]+'_')]

官方文档解释:

zip(*iterables)

创建一个聚合了来自每个可迭代对象中的元素的迭代器。

返回一个元组的迭代器,其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。

也就是说两个列表中的相同索引会在一起。而当上面输入的一个偶数长度的字符串时,多余的'_'并不会被组合到一起,这个真的是很厉害。

三:还有一个新的库,textwrap文本自动换行与填充

from textwrap import wrapdef split_pairs(a):a = a + '_' if len(a) % 2 else areturn wrap(a, 2)

textwrap 模块提供了一些快捷函数,以及可以完成所有工作的类 TextWrapper。 如果你只是要对一两个文本字符串进行自动换行或填充,快捷函数应该就够用了;否则的话,你应该使用 TextWrapper 的实例来提高效率。

textwrap.wrap(textwidth=70*initial_indent=""subsequent_indent=""expand_tabs=Truereplace_whitespace=Truefix_sentence_endings=Falsebreak_long_words=Truedrop_whitespace=Truebreak_on_hyphens=Truetabsize=8max_lines=None)

对 text (字符串) 中的单独段落自动换行以使每行长度最多为 width 个字符。 返回由输出行组成的列表,行尾不带换行符。

这个也是处理这个问题很好的方法。

Split Pairs相关推荐

  1. codeforces:C. Foe Pairs【排列 + 子数组个数问题 + 排序 + 二分】

    分析 求得是不能包含任意两个数字得子数组个数 那么排列问题当然要求数字对应得下标,把查询得两个数都转换为下标 得到m组下标对 然后按右端点排序 我们得思路是固定r,看看l最左到哪里 那么我们固定r,肯 ...

  2. Codeforces Round #561 (Div. 2)ABC

    三个题,各位大佬别喷我,我很菜 A Silent Classroom There are n students in the first grade of Nlogonia high school. ...

  3. java \t怎么从头开始_如何从头开始以正确的面向对象方式创建Java Web Framework

    java \t怎么从头开始 您如何用Java设计Web应用程序? 您安装了Spring,阅读了手册,创建了控制器 ,创建了一些视图,添加了一些注释 ,它就可以工作了. 如果没有Spring (Ruby ...

  4. 如何从头开始以正确的面向对象方式创建Java Web Framework

    您如何用Java设计Web应用程序? 您安装了Spring,阅读了手册,创建了控制器 ,创建了一些视图,添加了一些注释 ,它就可以工作了. 如果没有Spring (Ruby中没有Ruby on Rai ...

  5. 人脸识别0-03:insightFace-测试集数据制作-史上最全

    以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:17575010159 相互讨论技术. 人脸识别0-00:insightFace目录:ht ...

  6. 一节课轻松通关 Spark

    大数据跟我学系列文章007-三节课轻松通关 Spark (一) 文章目录 大数据跟我学系列文章007-三节课轻松通关 Spark (一) 前言 第01讲: MapReduce:计算框架和编程模型 第0 ...

  7. 【CodeForces - 1051B】Relatively Prime Pairs (构造,思维,素数,水题)

    题干: You are given a set of all integers from ll to rr inclusive, l<rl<r, (r−l+1)≤3⋅105(r−l+1)≤ ...

  8. facenet生成自己的pairs.txt

    # _*_ coding:utf-8 _*_ import os import random import argparse import sys class GeneratePairs:" ...

  9. 按照lfw pairs.txt的格式生成自己的pairs.txt

    1.把自己的数据集按照官方命名格式修改 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri ...

最新文章

  1. 了解黑客的关键工具---揭开Shellcode的神秘面纱
  2. mciSendString用法
  3. oracle开发方案,oracle報表開發方案
  4. Asp.net几大内置对象
  5. 【Hadoop Summit Tokyo 2016】企业数据分类和治理
  6. 一句DOS命令搞定文件合并
  7. cmd怎么进入linux系统时间,Linux怎么更改命令提示符信息
  8. java中有个很强大的工具jconsole.exe
  9. easyuI企业管理系统-实战二 表格引入json数据
  10. keybd_event()使用方法
  11. Guava库学习:学习Concurrency(九)RateLimiter
  12. python3设置编码_PYTHON3编码再探究
  13. java中的回调函数
  14. 天堂2服务器自动停止,为什么我一进天堂2就与服务器连接中断??/
  15. 滴滴+头条+网易游戏研发面经
  16. 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
  17. C语言经典项目之二——扫雷
  18. c语言函数定义时涉及的基本要素是什么,C语言基础:函数的定义与调用
  19. 作者:Scott Hanselman首席工程师
  20. 哥德巴赫猜想:任意大于6的偶数都可以被分解成两个素数之和

热门文章

  1. STM32——GPIO的CRL、CRH和CNF与MODE的关系
  2. 递归方法实现最大公约数
  3. Mongodb 求和
  4. 【ManageEngine】终端管理系统,助力华盛证券数字化转型
  5. 用注册表管理IE代理设置
  6. Houdini Grain 学习笔记
  7. 上海南到金山卫22号线金山铁路最新时刻表
  8. 向国外发送邮件用什么邮箱?
  9. python数据抓取工具_【重磅开源】Hawk-数据抓取工具:简明教程
  10. Linux部署Oracle11gR2 RAC详细教程