谢乾坤 | Kingname

给时光以生命。

如果你经常使用Python的命令行交互环境,你一定遇到过下面这个现象:

1
2
3
4
5
>>> a = 'test'
>>> a
'test'
>>> print(a)
test

首先定义一个变量a,它的值为字符串test。现在,当你在命令行交互环境直接输入变量名再回车的时候,你看到的是'test',当你输入print(a)的时候,你看到的却是test

阅读全文 »

在Python中,如果要判断一个字符串是否在另一个字符串里面,我们可以使用in关键字,例如:

1
2
3
4
5
>>> a = '你说我是买苹果电脑,还是买windows电脑呢?'
>>> if '苹果' in a:
... print('苹果这个词在a字符串里面')
...
苹果这个词在a字符串里面

如果有多个句子和多个关键字,那么可以使用for循环来实现:

1
2
3
4
5
6
7
8
9
10
11
sentences = ['你说我是买苹果电脑,还是买windows电脑呢?', 
'人生苦短我用Python',
'你TM一天到晚只知道得瑟',
'不不不,我不是说你,我是说在座的各位都是垃圾。'
'我CNM你个大SB'
]
keywords = ['垃圾', 'CNM', 'SB', 'TM']
for sentence in sentences:
for keyword in keywords:
if keyword in sentence:
print(f'句子: 【{sentence}】包含脏话:【{keyword}】')

运行效果如下图所示:

现在如果有100000000个句子,有1000个关键字,那么你需要对比1000亿次才能全部查询完成。这个时间代价太大了,如果Python一秒钟能运行500万次查询(实际上没有这么快),那么1000亿次查询需要20000秒,接近6小时。而且,由于in关键字的时间复杂度为O(n),如果有大量长句子,查询时间会更长。

阅读全文 »

这篇文章没有代码,请放心阅读。

程序员最宝贵的东西是生命,生命属于程序员只有一次。一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为搭建环境浪费时间而悔恨,也不会因为集群无法运行而羞耻。这样,在她开发的时候,她能够说:“我的整个生命和全部精力,都已经献给了开发中最重要的事情——设计程序,实现程序和调Bug。” ——P酱。

P酱是公司新来的实习生妹子。听说是一个文科生。文科生应该会去文案组或者策划组吧。什么?来数据组?让我来带?

于是我和P酱生活工作在了一起。

阅读全文 »

有不少朋友在开发爬虫的过程中喜欢使用Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现。

先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行Javascript代码,就能轻轻松松识别你是否使用了Selenium + Chromedriver模拟浏览器。

我们来看一个例子。

阅读全文 »

大家经常在一些博客中看到这样的说法:

1
a += 1

等价于

1
a = a + 1

这种说法实际上并不准确。

我们来看一个例子:

1
2
3
4
5
6
7
8
9
10
>>> a = [1, 2, 3]
>>> a += (4,)
>>> a
[1, 2, 3, 4]

>>> a = [1, 2, 3]
>>> a = a + (4,)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list

这里报错了,说明a += ba = a + b并不是完全等价的。

阅读全文 »
0%