博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python每日一练0002
阅读量:6721 次
发布时间:2019-06-25

本文共 1129 字,大约阅读时间需要 3 分钟。

问题

如何序列化输出元素包含字符串元组的字符串元组(好绕)

举个例子

>>> zoo1 = ('monkey', 'elephant')>>> zoo2 = ('python', zoo1)复制代码

将zoo2输出为python, monkey, elephant

解决方案

容易想到使用join()函数,但join()函数要求元素必须都是字符串类型,否则会抛出TypeError错误

>>> zoo1 = ('monkey', 'elephant')>>> zoo2 = ('python', zoo1)>>> print(', '.join(zoo2))Traceback (most recent call last):  File "
", line 1, in
TypeError: sequence item 1: expected str instance, tuple found复制代码

一个比较简单的方法是将zoo1给unpack进zoo2中,然后再将zoo2给unpack进print函数,最后指定print函数的sep参数来输出

>>> zoo1 = ('monkey', 'elephant')>>> zoo2 = ('python', *zoo1)>>> print(*zoo2, sep=', ')python, monkey, elephant复制代码

如果想要将结果存储起来,那么使用join就可以了

>>> zoo1 = ('monkey', 'elephant')>>> zoo2 = ('python', *zoo1)>>> s = ', '.join(zoo2)>>> print(s)python, monkey, elephant复制代码

讨论

上面的方法仅仅是针对于特定的情况,那么对于一个多重嵌套的元组该如何处理呢

容易想到使用递归来实现,判断当前元素的类型来决定是否结束递归即可

下面是一个简单的实现方法

zoo = (    'monkey',    'elephant',    ('penguin', 'camel'),    ('zebra', 'giraffe'),    'python',)def my_join(tpl, sep):    return sep.join(x if isinstance(x, str) else my_join(x, sep) for x in tpl)print(my_join(zoo, ', '))复制代码

来源

Stack Overflow

关注

欢迎关注的微信公众号:python每日一练

转载地址:http://qfnmo.baihongyu.com/

你可能感兴趣的文章
ReflectUtil
查看>>
MySQL show processlist;命令详解
查看>>
TCP报文结构
查看>>
架构组织形式的讨论,以及架构师之路的建议
查看>>
详解JavaScript模块化开发
查看>>
C之有符号与无符号(二)
查看>>
DOCKER网络代理设置
查看>>
javascript基础语法——变量和标识符
查看>>
Java静态变量、非静态变量、成员变量、的区别
查看>>
数据库中有外键时JavaBean的写法
查看>>
linux-sed
查看>>
16.4-16.8 Tomcat监听80端口,Tomcat的虚拟主机,访问日志
查看>>
app客户端测试
查看>>
nodejs渐入佳境[23]-hash函数
查看>>
Big Data Integration with Hadoop: A Q&A Spotlig...
查看>>
【062有新题】OCP 12c 062出现大量之前没有的新考题-16
查看>>
触手TV下载|触手TVapp下载
查看>>
PDF文件如何修改,PDF怎么添加文本高亮
查看>>
大链表数据去重的办法
查看>>
Awk使用案例总结(运维必会)
查看>>