Split Pairs

article/2025/9/12 15:22:04

问题描述:

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 个字符。 返回由输出行组成的列表,行尾不带换行符。

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


http://chatgpt.dhexx.cn/article/Gd2AtdGM.shtml

相关文章

B. Pairs

1.如果可以找出第两对数&#xff0c;且四个数完全不同&#xff0c;那么如果可以满足题意的话&#xff0c;那么那两个数一定在这四个数之中&#xff0c;那么暴力扫一遍就可以了 2.若找不出&#xff0c;那么一定可以满足题意 复杂度顶多 4n #include<algorithm> #include…

python版本的Pairs图

背景 在我2017年刚开始学习R语言的时候&#xff0c;我就被一个非常漂亮的图吸引到了。那个图非常漂亮。后来我才知道&#xff0c;那个图&#xff0c;叫pairs图。 大概是这样的&#xff1a; 类似的图还不少&#xff0c;还有这样的&#xff1a; 或者是这样的&#xff1a; 总结 …

PTP报文解析

以Sync报文为例&#xff0c;linux端执行sudo ptp4l -i eth0 -m -S&#xff0c;给windows端发送主节点报文&#xff0c;windows端用wireshark抓取到的报文如下图&#xff1a; 报文解析&#xff1a; 01 00 5e 00 01 81 &#xff1a;windows端mac地址&#xff1b; 78 d0 04 2c 6…

DHCP报文协议

Ipv4 单播&#xff0c;即点对点的通信&#xff0c;目的地址为单一目标的一种传输方式。 源IP、源MAC为发送者的IP和mac地址&#xff0c;目的IP、目的MAC为接收者的IP和mac地址。 广播&#xff0c;是指封包在计算机网络中传输时&#xff0c;目的地址为网络中所有设备的一种传输…

TCP报文段

TCP虽然是面向字节流的&#xff0c;但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分&#xff0c;而TCP的全部功能都体现在它首部中个字段的作用。因此&#xff0c;只有弄清TCP首部个字段的作用才能掌握TCP的工作原理。 TCP前20个字节使固定的&#xff0c;后…

OSPF报文格式

OSPF报文格式 OSPF报文可靠性机制&#xff1a; 由于OSPF协议是通过IP承载的&#xff0c;而IP协议是不可靠协议&#xff0c;所以OSPF需要自己的可靠机制来保证报文交互的可靠性在OSPF中有两种确认报文&#xff1a;1&#xff0c;显式确认报文&#xff08;LSACK&#xff09;2&…

机场气象报文解析

机场气象报文解析 背景示例思路代码结果预览致谢参考文献 从这篇文章&#xff0c;读者可以了解道机场气象报文的背景&#xff0c;知道其中数据大概长什么样子&#xff0c;如何利用python语言解析出机场气象报文里面的信息形成格式化数据。 背景 上个月的我国第六号台风“烟花…

Http协议报文格式

一、整体介绍 Http协议在传输层基于TCP协议&#xff0c;在Http1.1之前每次请求在TCP层都需进行一轮连接和释放&#xff08;三次握手、四次握手&#xff09;&#xff0c;从Http1.1开始默认使用长连接。 Http报文分为两种&#xff0c;请求报文和响应报文&#xff0c;大致格式如下…

CAN报文

CAN报文 Bit Numbering是汽车网络数据库用以辅助描述信号的专用术语&#xff0c;具体含义是位的编号顺序。 lsb0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LSB 是least significant bit&#xff0c;最低有效位。 msb0 bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 MSB是Most Si…

TCP报文头部

TCP包头详解 主要学习端口号、三次握手、四次挥手 TCP包头 TCP报文固定长度20字节可变长度 TCP包头如下图所示&#xff1a; 源端口、目标端口&#xff1a;计算机上的进程要和其他进程通信是要通过计算机端口的&#xff0c;而一个计算机端口某个时刻只能被一个进程占用&…

ICMP报文

紫色代表一级目录 粉红代表二级目录 蓝色代表三级目录 红色代表关键字 橙色代表说明 ICMP报文   为了更有效地转发 IP 数据报和提高交付成功的机会&#xff0c;在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。   ICMP 是互联网的标准协议。  …

常见网络报文

TCP报文 1、端口号&#xff1a;用来标识同一台计算机的不同的应用进程。 1)源端口&#xff1a;源端口和IP地址的作用是标识报文的返回地址。 2)目的端口&#xff1a;端口指明接收方计算机上的应用程序接口。 2、序号和确认号&#xff1a;是TCP可靠传输的关键部分。序号是本报文…

报文、报文段、数据报、数据包、帧的概念区别

报文&#xff08;message&#xff09;—— 应用层 是网络中交换与传输的数据单元&#xff08;站点一次性要发送的数据块&#xff09;。报文包含了将要发送的完整的数据信息&#xff0c;其长短不一致。报文在传输过程中会不断的封装成分组、包、帧来传输&#xff0c;封装的方式…

报文、报文段、分组、包、数据报、帧、数据流的概念区别

1.报文(message) 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元&#xff0c;也是网络传输的单元。报文包含了将要发送的完整的数据信息&#xff0c;其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输&#xff0c;封装的方式就是添加…

关于SPSS16的安装及教程

放SPSS安装文件 链接&#xff1a;https://pan.baidu.com/s/14QHqvok2IItQvV_72VPtOg 提取码&#xff1a;ee0k 接下来按照如下步骤操作就可以 按照上面的操作就可以完成安装了&#xff0c;这个属于比较老的SPSS版本&#xff0c;但是比较稳定。

【SPSS统计分析】SPSS19.0简体中文版安装教程(附SPSS19.0简体中文版下载)

spss19.0中文版是一款专业数据统计软件,受到各种社会学科的研究生、研究员的欢迎。软件能够对信息的采集、处理、分析进行全面评估和预测。spss19.0中文版新增加了广义线性混合模型、自动线性模型、一个统计网页入口portal和直复营销direct marketing功能等。另外,IBM 针对SP…

最新版最简单SPSS 26安装详细教程

SPSS为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称&#xff0c;有Windows和Mac OS X等版本。下面介绍安装教程 下载地址&#xff1a; 链接&#xff1a;SPSS下载地址 &#xff08;要是没有跳转到网盘请复制这个链接到…

spss20安装许可证代码_SPSS 22下载安装教程

软件下载 长按选择复制链接 [名称]:SPSS 22 [语言]:简体中文 [安装环境]:Windows [下载链接]: https://pan.baidu.com/s/1q4t2PtmyX2EcQy8E3CQnxg [提取码]: 6huj 链接失效、安装有问题请加微信:593003758拉你进软件资源小助手交流群 安装步骤 1.找到下载好的软件压缩包,…

spss statistics26 下载及安装教程

下载 解压后得到两个文件 点击下面那个&#xff0c;找到 “Windows”——“setup.exe”&#xff0c;双击打开 安装 1. 点击圈出的部分&#xff0c;开始安装 2. 一直点击下一步 / 我同意&#xff0c;直到如下界面 可以修改安装路径 3. 一直点击下一步&#xff0c;然后安装即可…

spss27软件安装包下载spss27安装教程

安装 步骤 1、将下载好的安装包 鼠标右击&#xff0c;选择 解压 2、解压得到一个安装文件夹&#xff0c;打开它 3、鼠标右击 SPSS_Statistics_Win64 &#xff0c;选择 以管理员身份运行 4、下一步 5、选择我接受&#xff0c;下一步 6、点击更改&#xff0c;选择安装位置&#…