私信  •  关注

flakes

flakes 最近创建的主题
flakes 最近回复了
3 年前
回复了 flakes 创建的主题 » Python——试图找出如何将两个列表的每个部分相乘

你很接近。您真正想要的是两个for循环,这样您就可以将一个列表中的每个值与第二个列表中的所有值进行比较。例如

def multiply_lists(list1, list2):
    for i in range(len(list1)):
        for j in range(len(list2)):
            products.append(list1[i] * list2[j])
    return products

你也不需要 range col,您可以直接迭代每个列表的项:

def multiply_lists(list1, list2):
    for i in list1:
        for j in list2:
            products.append(i * j)
    return products

你也可以这样理解:

def multiply_lists(list1, list2):
    return [i * j for i in list1 for j in list2]
3 年前
回复了 flakes 创建的主题 » 在Python中,将对象作为值存储在key:value对中是否安全?

将整个对象作为值传递是否安全、高效、可靠?

对Python中的一切都是对象。

如果我是正确的,这是一个打印函数,它在内存中返回一个表示对象的地址。这代表什么问题吗。。。打印函数返回内存中表示对象的地址。这代表什么问题吗?

这里没有问题。这完全取决于环境 __repr__ 类的重写。如果没有,那么默认实现是打印 id() 对象及其类类型的。例如。

>>> class Test: pass
>>> print(Test())
<__main__.Test object at 0x00000185FF1C5D30>

>>> class Test:
...     def __repr__(self): return "Tada!"

>>> print(Test())
Tada!

请尽可能对我的代码的结构和可靠性提出建议。如有任何意见,将不胜感激。

我宁愿使用数据类来表示条目,而不是使用非类型化的dict列表来存储条目。这些类型的类是存储纯数据和实现以下功能的理想方式 __报告__ , __init__ 还有其他对你有用的方法!例如:

from dataclasses import dataclass
from typing import Optional


@dataclass
class Gear:
    name: str
    attack_rating: int = 0
    magic_rating: int = 0
    defense_rating: int = 0


@dataclass
class Equipment:
    helmet: Optional[Gear] = None
    torso: Optional[Gear] = None
    hand: Optional[Gear] = None

使用这个类,你可以轻松构建你的玩家配置!

>>> player_equipment = Equipment()
>>> player_equipment.helmet = Gear("Tiara", magic_rating=15)
>>> print(player_equipment)
Equipment(helmet=Gear(name='Tiara', attack_rating=0, magic_rating=15, defense_rating=0), torso=None, hand=None)
3 年前
回复了 flakes 创建的主题 » python使用递归查找列表的深度

在循环浏览每个项目时,您希望记录其最大深度,并返回列表中单个子项的最大深度。你可以这样做:

def how_deep(list_of_lists):
    if not isinstance(list_of_lists, list):
        return 0
    return max(map(how_deep, list_of_lists), default=0) + 1