gpt4 book ai didi

Python:连接、字符串、迭代和 DWIM

转载 作者:行者123 更新时间:2023-12-01 02:09:28 25 4
gpt4 key购买 nike

应该加入 DWIM(按我的意思做),还是有太多可能性,我应该继续进行所有检查?

我的结果可以是单个整数、整数列表、字符串或字符串列表。看来我必须将结果编码到字符串化元素列表中,只是为了将可迭代对象传递给join。出于显而易见的原因,我也不希望将单个字符串拆分为字符。

以下是解释器中的一些尝试:

%> python
Python 3.6.0 (default, Dec 11 2017, 16:14:47)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 0
>>> ','.join(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only join an iterable
>>> x = [0, 1]
>>> ','.join(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> ','.join(map(str,x))
'0,1'
>>> x = 0
>>> ','.join(map(str,x))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> if not isinstance(x, (list, tuple)):
... x = [x]
...
>>> ','.join(map(str, x))
'0'
>>> x = [0, 1]
>>> ','.join(map(str, x))
'0,1'

所以看来最好的办法是最后几位,即:

if not isinstance(x, (list, tuple)):
x = [x]
joined = ','.join(map(str,x))

我正在寻找更好的方法来做到这一点,或者如果这是最好的方法,则对此进行改进。

[一边嘀咕着 Perl 一边走开...]

最佳答案

你所拥有的并不坏。我能想到的就是显式检查可迭代并使用三元语句。换句话说,仅当您拥有可迭代对象时才使用join

from collections import Iterable

joined = str(x) if not isinstance(x, Iterable) else ','.join(map(str, x))

关于Python:连接、字符串、迭代和 DWIM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48792648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com