小编Noa*_*art的帖子

复制嵌套自定义对象:深度复制的替代方案

我正在寻找一个包含类对象列表的类对象的深层副本,每个类对象都有自己的一组内容。这些对象不包含任何比整数和列表更令人兴奋的东西(没有字典,没有等待生成的生成器等)。我正在一个循环中对 500-800 个对象执行深度复制,这确实减慢了程序速度。我意识到这已经是低效了;目前无法更改。

其外观示例:

import random
import copy

class Base:
    def __init__(self, minimum, maximum, length):
        self.minimum = minimum
        self.maximum = maximum
        self.numbers = [random.randint(minimum, maximum) for _ in range(length)]
        # etc

class Next:
    def __init__(self, minimum, maximum, length, quantity):
        self.minimum = minimum
        self.maximum = maximum
        self.bases = [Base(minimum, maximum, length) for _ in range(quantity)]
        # etc
Run Code Online (Sandbox Code Playgroud)

由于我对对象执行的操作,我无法浅复制。我需要新变量拥有的内容:

> first = Next(0, 10, 5, 10)
> second = first
> first.bases[0].numbers[1] = 4
> print(first.bases[0].numbers)
> [2, 4, 3, 3, 8] …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
2
解决办法
9080
查看次数

"和"对赋值和添加的影响

一行代码绊倒了我:

>>> i = 1
>>> j = 1
>>> i += j > 0 and i
>>> print(i)
 2
Run Code Online (Sandbox Code Playgroud)

使这项工作的基础机制或系统是什么?这似乎是它的语法糖i = i + i if j > 0 else i,但解压缩了很多.我错了吗?还有其他系统在玩我不知道吗?

谢谢!

编辑:

为清楚起见:

>>> i = 3
>>> j = 2
>>> i += j > 1 and i
>>> i
6
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
1
解决办法
60
查看次数

在列表中均匀分布(Google Foobar:Maximum Equality)

这个问题来自谷歌Foobar,我的代码传递了除最后一次测试以外的所有测试,其中隐藏了输入/输出.

提示

换句话说,选择数组的两个元素x [i]和x [j](i与j不同)并同时将x [i]递增1并将x [j]递减1.您的目标是得到数组中的许多元素都具有相同的值.

例如,如果数组是[1,4,1],您可以执行如下操作:

从第一辆车发送一只兔子到第0辆:增加x [0],递减x [1],得到[2,3,1]从第一辆车发送一只兔子到第二辆:增加x [2],减少x [1],得到[2,2,2].

现在阵列中的所有元素都是相同的,并且您有一个向Beta Rabbit报告的策略!

请注意,如果数组是[1,2],我们可以得到的最大可能相等元素数是1,因为汽车中的兔子数量永远不会相同.

编写一个函数answer(x),它取整数x的数组,并根据需要多次执行上述命令,返回我们可以获得的相等数组元素的最大数量.

列车中的汽车数量(x中的元素)至少为2,不超过100.想要共享汽车的兔子数量(x的每个元素)将是[0的范围内的整数],百万].

我的代码

from collections import Counter

def most_common(lst):
    data = Counter(lst)
    return data.most_common(1)[0][1]

def answer(x):
    """The goal is to take all of the rabbits in list x and distribute
    them equally across the original list elements."""
    total = sum(x)
    length = len(x)
    # Find out how many are left over when distributing niavely.
    div, mod = divmod(total, length)
    # Because of the variable …
Run Code Online (Sandbox Code Playgroud)

python list python-2.7

3
推荐指数
1
解决办法
1119
查看次数

标签 统计

python ×3

list ×1

python-2.7 ×1

python-3.x ×1