gpt4 book ai didi

python - Python 中推导式的长度

转载 作者:行者123 更新时间:2023-11-30 23:01:43 25 4
gpt4 key购买 nike

Python 新手,所以请...

刚刚遇到推导式,我知道它们很快可能会衍生出点积或矩阵乘法(尽管结果是一个集合这一事实使它们更有趣),但我此时我想问是否有任何公式可以确定推导式的长度,例如:

{x * y for x in {3, 4, 5} for y in {4, 5, 6}} .

显然我不是指这个特定的:

len({x * y for x in {3, 4, 5} for y in {4, 5, 6}}) = 8 ,但是这种类型的任何一般操作,对两个集合进行逐元素乘法,并将所得整数的集合作为结果(无重复),对于任何给定长度的 x 和 y,连续整数,并已知 x[1] 和 y[1]

我知道这个问题处于编码和数学的十字路口,但我在这里问这个问题是因为它碰巧是一个有点常见或众所周知的计算问题,因为我读到推导式的使用非常广泛。只是从这个意义上来说,我对这个问题感兴趣。根据迄今为止的评论,我的感觉是事实并非如此。

编辑:

例如,这是一个模式:If x = {1, 2, 3} len(x * y)提供的理解式等于 9 y[1] = or > 3 。例如,len({x * y for x in {1, 2, 3} for y in {1111, 1112, 1113}}) = 9 。因此暂定,length = length(x) * length(y),前提是 x 和 y 的元素没有重叠。它适用于 4 元素集吗?当然:len({x * y for x in {1, 2, 3, 4} for y in {1111, 1112, 1113, 1114}}) = 16 。事实上,整数不需要连续,只是不重叠: len({x*y for x in {11,2,39} for y in {3,4,5}}) = 9

而且,是的,它不起作用......看看这个:

{x * y for x in {0, 1, 3} for y in {36, 12, 4}} = {0, 4, 12, 36, 108}

最佳答案

不,仅凭输入的长度这是不可能的。您可以使用数学通过计算公质因数来确定长度,但是所涉及的工作不会比仅仅计算结果并取其 len 有所改善,而且它需要了解集合内容,而不是只是它们的长度。

毕竟,只要长度,{2, 3} 乘以 {2, 3} (产生 {4, 6, 9}) 无法与 {2, 3} 乘以 {10, 11} 区分开来,这将产生完全唯一的输出(总共四个)。通过反证法进行简单证明;仅知道输入长度不足以确定输出的长度,在没有额外输入的情况下,(2, 2) 上的单个操作不可能同时生成 3 和 4。

关于python - Python 中推导式的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821065/

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