私信  •  关注

gilch

gilch 最近创建的主题
gilch 最近回复了
6 年前
回复了 gilch 创建的主题 » python类属性与全局变量

你的 YEAR 是列表类型。python的列表是可变的。在所有大写字母中拼写它意味着一旦设置就不应该更改它(一个“常量”),但这只是一个python根本没有强制执行的约定。

如果您想要一个可以更改的单独副本,而不是对全局的引用,请执行
yYEAR = YEAR[:] 相反。那么这个副本就属于这个班了。

这个 [:] 是一种切片表示法,它只复制整件事,因为您没有指定边界。
yYEAR = YEAR.copy() 也可以,但前者在列表方面更为传统。

如果需要每个实例的副本,请在 __init__ 相反,就像
self.yYEAR = YEAR[:] 是的。真的,你可以拼写成 self.year .那就更像是蟒蛇了。

通过使用不可变元组而不是列表,您可以对常量进行更具防御性的编码,以防止意外变异。然后你就可以把你的本地名单 yYear = [*YEAR] 或者如果你还在使用旧版本的python, yYear = list(YEAR) 也行。但是要注意,不可变元组仍然可以包含可变元素,因此这也不能完全强制执行常量正确性。


还要注意,语法如下 APR=JUN=SEP=NOV=[0]*30 意味着这四个月都将引用同一个列表对象。

6 年前
回复了 gilch 创建的主题 » 使用字典python制作一个甲板的帮助

字典中的键必须是唯一的。如果设置了一个已经存在的密钥,它将被替换。列表是一种比dict更自然的结构。

deck = [{'suit': suit["name"], 'value': number["name"]}
        for suit in suits for number in numbers]
print(deck)
6 年前
回复了 gilch 创建的主题 » 带浮点和小数的isdgit

这个 . 不是数字,因此如果字符串中包含数字, .isdigit() 方法返回 False . 你可以在像这样检查之前移除第一个事件 foo.replace(".", "", count=1).isdigit() . 对于更复杂的字符串模式检查,您需要使用 re 模块,可用于使用正则表达式指定任意数字格式。

6 年前
回复了 gilch 创建的主题 » unfrlatting list在python中返回意外错误

使用 zip() 并行地迭代两个或多个事物使用 range() 在不需要索引的时候创建索引是不必要的。

xss = [[1,2],[3,4]]
ys = [5,7]

for xs, y in zip(xss, ys):
    xs.append(y)

print(xss)

[[1, 2, 5], [3, 4, 7]]
6 年前
回复了 gilch 创建的主题 » python中url的正则表达式

改变 [s*] s? . 前者是由两个字符组成的集合。后者是可选字符。有这样的网站 regex101.com 这让您可以在Python方言中尝试正则表达式。它将解释regex的每个部分的解释。