如果不是迭代的,则将Pythonic转换为单例可迭代

时间:2019-04-10 16:45:26

标签: python

假设我有

def distance2(vector1, vector2):
    zipped = zip(vector1, vector2)
    difference2 = [(vector2 - vector1) ** 2 for (vector1, vector2) in zipped]
    return sum(difference2)

其中distance2(vector1, vector2)找到vector1vector2之间的(平方)欧几里得距离。该函数将适用于可迭代元素,但假设我们还希望使其适用于不可迭代元素(即distance2(1,3))。有pythonic的方法可以做到这一点吗? (即自动将常规输入变成单例列表)。

2 个答案:

答案 0 :(得分:2)

您正在描述always_iterable的基本用例。

>>> from more_itertools.more import always_iterable
>>> for val in always_iterable(1):
...     print(val)
...     
1

此助手是thoroughly battle-tested in OSS

答案 1 :(得分:0)

你可以使用 numpy:

np.atleast_1d(1)
>> array([1])

np.atleast_1d([1,2,3])
>> array([1,2,3])