为什么欧拉从不脱帽。有没有注意到在他找到第一份工作后,他的每张照片和雕像都戴着一模一样的帽子。可能是他买的第一件东西。他的最后一句话可能是我的帽子在哪里。
image.png欧拉发表在数学杂志上的论文。言简意赅指出:5个正整数的5次方之和恰好是一个数的5次方,能够找到的最小结果。后人也模仿起来 :
73=1+((11+1)^(1+1)/(1+1))
73=(2×(2+2+2)^2)+2/2
73= (3+(3+3)^3)/3
73=4+4+(4^4+4)/4
73=5×(5+5+5)-(5+5)/5
73=(((666/(6+6+6))×(6+6))-6)/6
73=77+7-77/7
73=8×8+8/8+8
73=9×9+9/9-9
** 时间序列的股票价格波动,
可以参考下面的5种分类:
1、无序,有增有减
2、严格递增,一直升高
3、没有递减,存在价格不变的情况
4、严格递减,一直减少
5、保持不变
def sequence_classifier(arr):
if all(arr[i] == arr[i+1] for i in range(len(arr)-1)): return 5
if all(arr[i] < arr[i+1] for i in range(len(arr)-1)): return 1
if all(arr[i] <= arr[i+1] for i in range(len(arr)-1)): return 2
if all(arr[i] > arr[i+1] for i in range(len(arr)-1)): return 3
if all(arr[i] >= arr[i+1] for i in range(len(arr)-1)): return 4
return 0
5 次条件判断,就这?感觉有点平庸?
优秀的代码总是层出不穷
solution 2nd
TYPE_SEQ = {(1,): 1, (0,1): 2, (-1,):3, (-1,0): 4, (0,): 5}
def sequence_classifier(arr):
countSet = { (a<b) - (a>b) for a,b in zip(arr, arr[1:]) }
return TYPE_SEQ.get(tuple(sorted(countSet)), 0)
算法思想任务-
*Cat_senior_2014 Board game
安娜和布雷特正在玩一个游戏,一个计数器沿着一个有数字的棋盘移动。安娜首先把计数器放在最左边的两个数字上。然后玩家轮流移动,将柜台向右移动一到两个地方。将计数器放在一个数字上可以使玩家获得这个分数。获胜的优势是(获胜者的分数)−(失败者的分数)。这个游戏的目的是获得尽可能大的获胜优势。如果双方都打得尽可能好,安娜的胜优势是多少?
是时候对pd.read_csv()和pd.to_csv()说再见了
讨论 pandas 的另一个主要注意事项
白色和黑色的爱情印花纺织品(来源:Pexels)
用Pandas对CSV的输入输出操作是串行化的,这使得它们的效率非常低,而且很费时间。当我看到这里有充分的并行化空间时,这很令人沮丧,但不幸的是,Pandas并没有提供这种功能(目前)。虽然我从不赞成一开始就用Pandas创建CSV(请阅读我下面的文章了解原因),但我理解在某些情况下,人们除了用CSV工作外别无选择。
为什么我不再将数据帧转储到CSV中,为什么你也应该这样做?
是时候向pd.to_csv()和pd.read_csv()说再见了
因此,在这篇文章中,我们将探讨Dask和DataTable,这两个为数据科学家提供的最有趋势的类Pandas库。我们将根据Pandas、Dask和Datatable在以下参数上的表现进行排名。
读取CSV并获得PANDAS DATAFRAME所需的时间
如果我们通过Dask和DataTable读取CSV,它们会分别生成Dask DataFrame和DataTable DataFrame,而不是Pandas DataFrame。假设我们想坚持使用传统的Pandas语法和函数(由于熟悉),我们将不得不先把这些转换为Pandas DataFrame,如下图所示。
描述将Pandas DataFrame转换为Dask和DataTable DataFrame的代码片断
描述将Pandas DataFrame转换为Dask和DataTable DataFrame的代码片断(图片来自作者)
- 将PANDAS数据帧存储为CSV所需的时间
我们的目的是要从给定的Pandas DataFrame中生成一个CSV文件。对于Pandas,我们已经知道df.to_csv()方法。然而,为了从Dask和DataTable中创建一个CSV,我们首先需要将给定的Pandas DataFrame转换为各自的DataFrame,然后将它们存储在CSV中。因此,在这个分析中,我们也会考虑这个DataFrame转换的时间。
使用Pandas、Dask和DataTable将DataFrame保存到CSV的代码片段。
使用Pandas、Dask和DataTable将DataFrame保存为CSV的代码片断(图片由作者提供)
实验设置。
为了实验的目的,我在Python中生成了一个随机数据集,有可变的行和30个列--包括字符串、浮点和整数数据类型。
我将下面描述的每个实验重复了五次,以减少随机性,并从观察到的结果中得出公平的结论。我在下面一节中报告的数字是这五个实验的平均数。
Python环境和库。
Python 3.9.12
Pandas 1.4.2
DataTable 1.0.0
Dask 2022.02.1
实验1:读取CSV的时间
下图描述了Pandas、Dask和DataTable读取一个CSV文件并生成Pandas DataFrame所花费的时间(以秒计)。CSV的行数从10万到500万不等。
线图描述了Pandas、DataTable和Dask读取CSV的时间(图片来自作者)
实验结果表明,当行数少于一百万时,Dask和Pandas从CSV中生成Pandas DataFrame的时间大致相同。
然而,当我们超过一百万行时,Dask的性能就会变差,它生成Pandas DataFrame的时间明显多于Pandas本身。
在这两种情况下,Datatable在Pandas中生成一个DataFrame所需的时间最少,提供了高达4到5倍的速度--使其成为迄今为止最好的选择。
实验2:保存到CSV的时间
下面的图表描述了Pandas、Dask和DataTable从给定的Pandas DataFrame生成CSV文件所花费的时间(以秒为单位)。行数从10万到500万不等。
线图描述了Pandas、DataTable和Dask将DataFrame存储为CSV的时间(图片由作者提供)
在所有情况下,Dask在将Pandas DataFrame存储到CSV中的表现都比Pandas差。
与实验1类似,DataTable的表现最好--相对于Pandas,它的保存过程提高了近8倍。
总结说明
说实话,我并不是CSV的忠实粉丝。如果你彻底阅读了我之前的帖子(我在上面有链接,或者你可以在这里阅读)和你现在正在阅读的帖子,你可能也会对我产生共鸣。自从我发现与CSV有关的众多问题后,我已经尽可能地停止使用它们。
最后,我想说的是,除非你需要在Excel等非pythonic环境下查看你的DataFrame,否则你根本就不需要CSV。最好是像Parquet、Feather或Pickle这样的格式来存储你的DataFrame。不过,如果你觉得没有其他选择,至少可以通过利用DataTable而不是Pandas来优化你的输入和输出操作。
Python 可迭代对象
Python的可迭代对象真的将所有值存储在内存中吗
Python snippet
temp = "5 degrees"
cel = 0
fahr = float(temp)
cel = (fahr - 32.0) * 5.0 / 9.0
print(cel)
哪一行/几行应该被 try 块包围?
1
3
3、4
4
无
在 Python 中,关键词 “def” 有什么作用?
这是一个俚语,代表“这些代码真的酷毙了”。
它表示一个函数的开始。
它表示以下的缩进代码段将被储存起来以后再用。
它代表一个函数的开始,然后接下来的代码会被储存到以后使用。
以上全都不对。
这些代码会打印出什么?
n = 0
while True:
if n == 3:
break
print(n)
n = n + 1
012
0123
12
123
以下代码将打印多少行?
for i in [2,1,5]:
print(i)
1
2
3
5
以下是一个如何在一串数值中找到最小的数值的代码。 一行代码有错误,导致整个代码无法和预期一样的运行。 那么是哪一行?
smallest = None
print("Before:", smallest)
for itervar in [3, 41, 12, 9, 74, 15]:
if smallest is None or itervar < smallest:
smallest = itervar
break
print("Loop:", itervar, smallest)
print("Smallest:", smallest)
第 ? 行?
3
4
6
7
其中哪一个评估为 False(假)?
0 == 0.0
0 is 0.0
0 is not 0.0
0 = 0.0
下面的代码中 i 的值是什么?
word = "bananana"
i = word.find("na")
nanana
2
3
True
na
在字符串中,用什么来代表新的一行?
\n
{new_line}
{n}
/n
/new
“continue”这个词在循环中间起到什么作用?
循环后直接跳转到代码。
跳到代码的下一行。
跳到循环的下一个迭代。
跳过下一个代码块。
使用下列哪种方法可以在列表末尾添加元素?
insert
push
append
new
在这个代码中,n 等于什么?
words = 'His e-mail is q-lar@freecodecamp.org'
pieces = words.split()
parts = pieces[3].split('-')
n = parts[1]
@
q
lar
lar@freecodecamp.org
当这些代码运行之后,dict 等于什么?
dict = {"Fri": 20, "Thu": 6, "Sat": 1}
dict["Thu"] = 13
dict["Sat"] = 2
dict["Sun"] = 9
{'Fri': 20, 'Thu': 6, 'Sat': 1}
{'Fri': 20, 'Thu': 6, 'Sat': 1, 'Thu': 13, 'Sat': 2, 'Sun': 9}
{'Sun': 9}
{'Thu': 13, 'Sat': 2, 'Sun': 9}
{'Fri': 20, 'Thu': 13, 'Sat': 2, 'Sun': 9}
这段代码将打印什么?
counts = { 'quincy' : 1 , 'mrugesh' : 42, 'beau': 100, '0': 10}
print(counts.get('kris', 0))
2
quincy
0
10
[将返回错误]
以下代码将打印什么?
counts = { 'chuck' : 1 , 'annie' : 42, 'jan': 100}
for key in counts:
if counts[key] > 10:
print(key, counts[key])
annie 42
jan 100
chuck 1
annie 42
jan 100
chuck 1
[Error](错误)
这些代码会打印出什么?
d = dict()
d['quincy'] = 1
d['beau'] = 5
d['kris'] = 9
for (k,i) in d.items():
print(k, i)
quincy 0
beau 1
kris 2
quincy 1
beau 5
kris 9
1 quincy
5 beau
9 kris
哪个代码与示例代码完成相同的功能?
#示例snippet
lst = []
for key, val in counts.items():
newtup = (val, key)
lst.append(newtup)
lst = sorted(lst, reverse=True)
print(lst)
#比较snippet
print( sorted( [ (v,k) for k,v in counts.items() ], reverse=True ) )
print( [ (k,v) for k,v in counts.items().sorted() ] )
print( sorted( [ (v,k) for k,v in counts.keys() ] ) )
print( [ (k,v) for k,v in counts.values().sort() ] )
哪一个正则表达式匹配只有一个空白字符?
\S
\s
.
_
\.
该程序会打印出什么?
import re
s = 'A message from csev@umich.edu to cwen@iupui.edu about meeting @2PM'
lst = re.findall('\\S+@\\S+', s)
print(lst)
['csev@umich.edu', 'cwen@iupui.edu']
['csev@umich.edu']
['umich.edu', 'iupui.edu']
['csev@', 'cwen@']
在正则表达式中,怎么搜索一个 “$” 符号?
$
\dollar\
\$
!$
哪个 Python 库提供对 TCP 套接字的访问?
tcp
socket
http
port
通常使用哪种类型的 HTTP 请求来访问一个网站?
POST
GET
WEB
ACCESS
以下代码创建了什么?
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
print(data.decode(),end='')
mysock.close()
一个简单的 web 服务器
一个简单的 email 客户端
一个简单的待办事项列表
一个简单的 web 浏览器
大多数网站使用哪种编码类型?
UTF-8
UTF-16
UTF-32
以下代码的输出将是什么样的?
import urllib.request
fhand = urllib.request.urlopen('http://data.pr4e.org/romeo.txt')
for line in fhand:
print(line.decode().strip())
只有 “romeo.txt” 的内容。
“romeo.txt” 的 header 和内容。
“romeo.txt” 的 header、footer 和内容。
哪个 Python 库是用于解析 HTML 文档并从中提取数据?
socket
http
BeautifulSoup
PrettyBiscuit
WonderfulSalad
HttpParser
GrunkleStan
通过互联网发送数据的两种最常见的方法是什么?
JSON 和 TXT
JSON 和 XML
XML 和 TXT
XML 和 PHP
PHP 和 TXT
以下 XML 有什么问题?
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
<email hide="yes" />
</person>
Email 标签缺少结束标签。
间距将导致 XML 无效。
Phone 标签缺少结束标签。
纯文本应使用 UTF-8 编码。
什么是 XSD?
XML 的 W3C 模式规范。
来自 MOZ 的标准 JSON 模式。
可扩展情境驱动程序
这些代码会打印出什么?
import json
data = '''
[
{ "id" : "001",
"x" : "2",
"name" : "Quincy"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Mrugesh"
}
]
'''
info = json.loads(data)
print(info[1]['name'])
Quincy
Mrugesh
001
009
[Error](错误)
用面向服务的方法来开发网络应用,数据位于何处?
分布在许多通过互联网或内部网络连接的计算机系统上。
在主 Web 服务器上的不同服务中。
在单独的数据库服务器上。
API 的全称是什么?
应用便携式智能(Application Portable Intelligence)
国际助理编程(Associate Programming International)
应用程序接口(Application Program Interface)
动作便携式接口(Action Portable Interface)
当 Twitter API 发出请求时,必须始终随请求一起发送什么信息?
Twitter 用户名
日期范围
搜索词
密钥
于 Python 对象的说法,哪一个是不正确的?
对象被创建和使用
对象是代码和数据的一部分
对象隐藏细节
对象是五个标准数据类型之一
下列代码正确的输出是?
class PartyAnimal:
x = 0
def party(self):
self.x = self.x + 2
print(self.x)
an = PartyAnimal()
an.party()
an.party()
So far 1
So far 2
0
0
2
2
2
4
以下程序将打印什么?
class PartyAnimal:
x = 0
name = ''
def __init__(self, nam):
self.name = nam
print(self.name,'constructed')
def party(self):
self.x = self.x + 1
print(self.name,'party count',self.x)
q = PartyAnimal('Quincy')
m = PartyAnimal('Miya')
输出结果是?
q.party()
m.party()
q.party()
Quincy constructed
Miya constructed
Quincy party count 1
Miya party count 2
Quincy party count 3
Quincy constructed
Miya constructed
Quincy party count 1
Miya party count 1
Quincy party count 2
Quincy constructed
Quincy party count 1
Quincy party count 2
Miya constructed
Miya party count 1
面向对象编程中的继承是指什么?
扩展父类时创建的新类。
类的构造实例。
通过扩展现有类来创建新类的能力。
在使用类构造对象时调用的方法。
哪个不是数据库中主要的数据结构?
array
list
行
列
您将使用什么 SQL 命令来检索具有电子邮件地址 quincy@freecodecamp.org 的所有用户?
SELECT Users WHERE email="quincy@freecodecamp.org"
SELECT Users WHERE email IS "quincy@freecodecamp.org"
SELECT ALL Users WHERE email="quincy@freecodecamp.org"
SELECT * FROM Users WHERE email IS "quincy@freecodecamp.org"
SELECT * FROM Users WHERE email="quincy@freecodecamp.org"
对于一个字符串数据应该被保存在一个数据库里多少次,最佳实践是什么?
0
1
2
3
什么是外键?
一个不应存在于这里的键
一个使用非拉丁字符的键
一个指向不同表中关联行的主键的数字
一个在“现实世界”中可能用于查找行的键
INSERT 命令在 SQL 中的作用是什么?
它定义新行,通过列出我们要包括的字段,然后列出要放入新行中的值。
它定义新列,通过列出要包含的行以及要放入新列中的值。
它定义一个新表,通过列出要包括的行和字段以及要放入表中的值。
在 SQL 语句中使用 JOIN 子句时,ON 的作用是什么?
它指示在哪些表上执行 JOIN。
它指定用于 JOIN 的字段。
它指示如何将两个表连接在一起。
关系型数据库:多对多关系
哪个是多对多关系的示例?
老师与学生
客户与订单
书与内页
城市与国家
大多数数据在使用之前需要 ______ 。
转换为 JSON 格式
图形化
清理
记忆
转化成歌曲
页面排名算法是如何工作的?
它决定哪些页面之间的连接程度最高。
它用浏览量来决定排名
它能判断出哪些页面包含最重要的内容。
Python Operators and Expressions
In the Python statement x = a + 5 - b:
a and b are ________
a + 5 - b is ________
operands, an expression
operators, a statement
operands, an equation
terms, a group
在Python语句中x = a + 5 - b,Python运算符和表达式
a和b是________
a + 5 - b 是 ________
操作数,一个表达式
运算符,一个语句
操作数,一个方程
表达式100/25的值是多少?
如果你回答是4,你可能忘记了标准除法的结果总是浮点数。100/25(整数除法)的值是4。
你应该使用==运算符来确定浮点数类型的对象是否相等?
Sure! Go for it.
Nope, not a good idea.
不是好主意!
浮点对象的内部表示并不精确,所以不能依靠它们完全等于你认为的那样。
再看下面例子:
>>> 1.1 + 2.2 == 3.3
False
>>> tolerance = 0.00001
>>> abs((1.1 + 2.2) - 3.3) < tolerance
True
你应该表达容忍误差的范围,这是一种取舍判断 !
即公差计算这些数字是否足够接近,以满足一个指定的公差。
Consider the following code snippet:
下列代码片段的输出是?
x = 10.0
y = (x < 100.0) and isinstance(x, float)
#After these are executed, what is the value of y?
True
Correct
0
None
1
False
表达式的术语
不仅是真实的,而且实际上等于 Python 值 True 的情况。因此该表达式也是 True。
下面哪些为真 True
if (x < 100.0) and isinstance(x, float) == True
x 是下列哪些值时成立?
0
False
True
"None"
[]
0.000001
Python 对象 None 是虚假的,但是非空字符串 'None' 是真实的。
0.000001,一个非零的数字值,也是真实的。但是很勉强。
假设执行了以下语句。
a = 100
b = 200
表达式的值是多少?
a and b
200
100
当两个非布尔值用and或or连接时,表达式的值是其中一个操作数,而不是True或False。
对于两个非布尔值a和b。
如果a是a或者b是a并且b是truthyabfalsyba
数学模块中的函数sqrt()计算了一个数字的平方根。
突出显示的这行代码是否会引发一个异常?
The function sqrt() from the math module computes the square root of a number.
Will the highlighted line of code raise an exception?
x = -100
from math import sqrt
x > 0 and sqrt(x)
在突出显示的一行中,x>0是False。在这一点上,这个表达式已经知道是错误的了。由于短路,sqrt(x)(会引发一个异常)没有被执行!
For two objects x and y,满足 x is y is True 的条件是 :
x is y is True
if and only if:id(x) == id(y)
True
False
Which of the following operators has the lowest precedence?
下列运算符的优先次序?
%
**
and
+
not
and has the lowest precedence of all the operators covered in this tutorial except or.
The question doesn’t state whether the + operator listed is binary addition or unary positive. But it doesn’t matter—it wouldn’t have a lower precedence than and either way.
和在本教程中涉及的所有运算符中优先级最低,除了或。
问题中没有说明所列的+运算符是二进制加法还是单进制正数。但这并不重要--无论如何,它的优先级都不会比and低。
What is the value of the expression 1 + 2 ** 3 * 4?
4097
108
36
33
解析:
首先,*运算符的优先级最高,其次是,而+的优先级最低。
因此,计算的过程如下。
The ** operator has the highest precedence, followed by *, and + the lowest.
Thus, the calculations are performed as follows:
1 + (2 ** 3) * 4
1 + (8 * 4)
1 + 32
33
方便读者不必回忆优先顺序,把它写成1 + ((2 * 3) * 4)也不失为一个好主意,尽管括号并没有改变表达式的求值方式。
To spare the reader from recalling the order of precedence, it wouldn’t be a bad idea to write this as 1 + ((2 ** 3) * 4), even though the parentheses don’t change the way the expression is evaluated.
编写Python代码练习
创建一个数值为100的变量x
使用一个增强的赋值运算符将x的值增加5倍
1Write Python code to:
Create a variable x with the value 100
Increase the value of x fivefold using an augmented assignment operator
Incorrect
Use the *= operator
This is what we expected to see:
x = 100
x *= 5
你的代码是?
Splitting, Concatenating, and Joining Strings in Python
In Python, strings are…
immutable
changeable
str objects
char arrays
split()的minsplit参数指定了对输入字符串进行分割的最小数量。
准确
不正确
错
不正确
split()接收两个参数:sep,分隔符字符串,和maxsplit,指定对输入字符串进行分割的最大数量。
Which of the following would separate a string input_string on the first 2 occurences of the letter “e”?
以下哪种情况会使一个字符串input_string的前两次出现的字母 "e "分开?
input_string = "occurences"
print('e'.split(input_string, maxsplit=2))
print(input_string.split('e', 2))
print('e'.split(input_string, 2))
print(input_string.split('e', maxsplit=2))
['e']
['occur', 'nc', 's']
['e']
['occur', 'nc', 's']
网友评论