分类目录归档:技术

Chrome 滚动条美化:在 Overlay Scrollbars 被取消之后

自从取消了 overlay ,滚动条实在有碍观感。

参考 reddit 网友做法,用 stylus 对任意网站美化 Chrome 滚动条:

  1. 在 Chrome 中安装 stylus 插件以自定义状态栏样式
  2. 在 stylus 中新建下列样式并“应用于所有页面”
::-webkit-scrollbar {
    width: 5px;
    height: 5px;
    background: #dddddd00;
}

::-webkit-scrollbar-button {
    width: 5px;
    height: 5px;
    background: #dddddd00;
}

::-webkit-scrollbar-button:hover {
    background: #d1d1d188;
}

::-webkit-scrollbar-thumb {
    background: #cccccc88;
}

::-webkit-scrollbar-thumb:hover {
    background: #88888888;
}

::-webkit-scrollbar-track {
    background: #dddddd00;
}

这样就可以了 🤣

Pandas 已不允许使用“存在缺失标签的列表”进行索引(Indexing with list with missing labels is deprecated)

为了 .reindex 这一方法,自 0.21.0开始,pandas 不再支持使用 .loc[] 方法对存在一个或多个缺失标签的列表 (a list with one or more missing labels) 进行索引。

Starting in 0.21.0, using .loc or [] with a list with one or more missing labels, is deprecated, in favor of .reindex.

引自官方文档

例如对这一 数据:

s = pd.Series([1, 2, 3])
In [99]: s
Out[99]: 
0    1
1    2
2    3
dtype: int64

更改前

在此之前,我们可以直接:

s.loc[[1, 2, 3]]

得到:

Out[4]:
1    2.0
2    3.0
3    NaN
dtype: float64

在上面的操作中,尽管并不存在 3 这样一个索引,pandas 还是正确选取了存在的索引并用 NaN 对不存在的索引对应的值进行填充 (上述输出中的 3 NaN)。

更改后

现在我们只能得到:

In [4]: s.loc[[1, 2, 3]]
Passing list-likes to .loc with any non-matching elements will raise
KeyError in the future, you can use .reindex() as an alternative.
See the documentation here:
https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike
Out[4]:
1    2.0
2    3.0
3    NaN
dtype: float64

在这里 pandas 跑出了错误和解决指引。但是这个指引对不熟悉 pandas 的人来说并不友好,下面给出类似结果的简单操作。

简单实现相同的操作

在当前版本(>0.21.0),我们可以根据官方指引,使用 .reindex 得到相同结果:

s.reindex([1, 2, 3])

在 DataFrame 中,也类似; 若需使用列而非行,则需要指定 axis:

df.reindex([1, 2, 3], axix=1) # 列

更多样例可参见原文档

Pandas 真是更新狂魔。

击败 98.93% 的 Python 解法

觉得生活即将失控的时候,总喜欢做点自己能掌控的事情——例如玩游戏,又如码代码。

与变幻莫测的人生不一样,在机械键盘上敲下一个又一个的字母,就能换来确定无疑的运行结果(哪怕是报错),确实应该被视作一件极其令人欣慰的事。

今天在群里看到一道简单算法题,做了做,没想到超过了 98.93% 的 Python 解法,这已经足够让我自欺欺人了。

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。如:输入: s = “anagram”, t = “nagaram”输出: true

我的解法

def isAnagram(self, s: str, t: str) -> bool:
# 定义默认布尔值参与后续运算
    result = True
# 利用 Python 数据结构 set 去重去序
    set_tmp = set(s)
# 先判断组成字符串的各个字符元素是否一致
if set_tmp == set(t):
for i in set_tmp:
# 利用逻辑运算符判断各个字符元素的数量一致,均为 True 才输出 True
            result = result and (s.count(i) == t.count(i))
else:
        result = False
return (result)

主要利用了 set 的内置优化和特性减少运算,以及使用布尔运算提高效率。

执行用时 : 48 ms, 在所有 Python3 提交中击败了 98.93% 的用户

内存消耗 : 14 MB, 在所有 Python3 提交中击败了 29.70% 的用户“

举凡与意志相违、相妨、相抗,即一切不快不幸之事,总是立刻引起我们重视”,记录下这个小确幸或许,是重要的。