有人问我在Python 3编写一个函数为:写一个调用的函数general_poly
,这将,例如,评估general_poly([1, 2, 3, 4])(10)
对1234
因1*10^3 + 2*10^2 + 3*10^1 + 4*10^0
.
现在我不明白第二个括号是什么(10)
意思.
我的功能如何general_poly
知道,将这个值放在自身内部并使用它?
我对自己有点恼火,因为我无法理解为什么一个问题的解决方案有效,但另一个没有.就像在,它指出我对(基本)大熊猫的理解不足,这让我很生气!
无论如何,我的问题很简单:我有一个'坏'值列表('bad_index'); 这些对应于数据帧('data_clean1')上的行索引,我想删除相应的行.但是,由于值将随每个新数据集而变化,因此我不想将错误值直接插入代码中.这是我先做的事情:
bad_index = [2, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 29]
for i in bad_index:
dataclean2 = dataclean1.drop([i]).reset_index(level = 0, drop = True)
Run Code Online (Sandbox Code Playgroud)
但这没效果; data_clean2与data_clean1完全相同.我的第二个想法是使用列表推导(如下所示); 这很好.
bad_index = [2, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 29]
data_clean2 = data_clean1.drop([x for x in bad_index]).reset_index(level = 0, drop = True)
Run Code Online (Sandbox Code Playgroud)
现在,为什么列表理解方法有效而不是'for'循环?我已经编写了几个月的代码,我觉得我不应该犯这些错误.
谢谢!
更新 此问题已在 PyCharm 2017.2 中解决
def foo(x):
return x / (60 * 60)
z = 1
y = 2
bar = 0 if y == 0 else z / y
foo(bar)
Run Code Online (Sandbox Code Playgroud)
这导致 PyCharm 2017.1.4 具有几乎默认的分析器设置(我相信)显示以下警告:
预期类型
'{__div__}'
,而是得到 'Union[int, float]'。此检查检测函数调用表达式中的类型错误。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的
现在,当然 Python 没有静态类型检查,但很明显,这里bar
总是int
或float
(并且 PyCharm 将其理解为got Union[int, float]
在上述警告中很明显)。
那么,这是 PyCharm 中的一个错误,在这个特定用例中它无法看到int
并float
执行__div__
,还是我在这里遗漏了其他东西?
更新
奇怪的是,如果foo
修改为return x * 60 * 60
警告消失,PyCharm 不会警告x
不执行__mul__ …
例如
x = 1.23
print("%.3f" % x)
Run Code Online (Sandbox Code Playgroud)
输出将是“ 1.230”,我想要“ 1.23”。有什么办法吗?谢谢。
编辑:我想要一个函数,将以极限精度打印浮点,并且如果没有达到给定的极限,则不会打印零
我知道cache_clear
。但是我想知道如何清除单个调用的缓存。看到cache_clear
不接受一个论点,我认为唯一的方法是直接弄乱底层字典。会产生什么副作用(如果有的话)?
目标是实现以下目标
from functools import lru_cache
@lru_cache()
def f(x):
print('called with ', x)
f(1)
f.cache_clear(1) # obviously does not work
f(1)
Run Code Online (Sandbox Code Playgroud)
随着输出
called with 1
called with 1
Run Code Online (Sandbox Code Playgroud) 我正在使用内置 to_excel 函数的 Pandas 使用我创建的数据框创建 Excel 表。
DataSet.to_excel("July24th.xlsx", sheet_name='sheet1', index=False)
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以使用当前日期命名我的 Excel 工作表。我希望此代码自动采用日期。我正在尝试按计划运行我的 python 代码。所以每天我运行我的代码,它都会为那天创建一个 excel 表。我想保留生成的所有 excel 表。
我尝试使用这样的东西:
import time
TodaysDate = time.strftime("%d/%m/%Y")
excelfilename = TodaysDate +".xlsx"
DataSet.to_excel(excelfilename, sheet_name='sheet1', index=False).
Run Code Online (Sandbox Code Playgroud)
但是上面给出了一个错误。我还能通过什么其他方式获得这样的输出。
我设法在Python 3.4和3.7上重现了这一点.
考虑:
class Comparable:
def _key(self):
raise NotImplementedError
def __hash__(self):
return hash(self._key())
def __eq__(self, other):
...
def __lt__(self, other):
...
class A(Comparable): pass
class B(A):
def __str__(self):
return "d"
def __eq__(self, other):
return isinstance(self, type(other))
def _key(self):
return str(self),
b = B()
Run Code Online (Sandbox Code Playgroud)
显然,人们期望b.__hash__
在这里定义,因为它定义在Comparable
哪个B
子类下.
瞧,它被定义,但评估为None
.是什么赋予了?
>> b
<__main__.B object at 0x00000183C9734978>
>> '__hash__' in dir(b)
True
>> b.__hash__
>> b.__hash__ is None
True
>> B.__mro__
(<class '__main__.B'>, <class '__main__.A'>, <class '__main__.Comparable'>, <class …
Run Code Online (Sandbox Code Playgroud) 我有字典列表和整数列表
x = [
{
"name": "tom",
"job": "judge"
},
{
"name":"bob",
"job": "policeman"
}
]
y = [1000, 2200]
Run Code Online (Sandbox Code Playgroud)
我想压缩它们并将y
元素添加到字典中,因为"payroll": y_element
所需的输出将是:
[
{
"name": "tom",
"job": "judge",
"payroll": 1000
},
{
"name":"bob",
"job": "policeman",
"payroll": 2200
}
]
Run Code Online (Sandbox Code Playgroud)
我实际上是通过以下方式实现的:
z = zip(x, y)
for i in z:
i[0]["payroll"] = i[1]
z = [i[0] for i in z]
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以在列表理解中的字典理解中完成。这是我到目前为止所尝试的:
z = [{k: v, "value": o} for d, o in z for k, v in d.items()]
Run Code Online (Sandbox Code Playgroud)
显然这是错误的,因为输出是: …
所以我想在查询中使用for循环,如果记录的字段等于对象的属性(在对象列表中),则拉取结果我该怎么做?这是我的代码:
you = session.query(Users).filter_by(id=login_session['userid']).first()
friends = session.query(Friends).filter_by(user_id=login_session['userid']).all()
dashboard = session.query(Markers).filter(Markers.owner == f.friend_id for f in friends).all()
Run Code Online (Sandbox Code Playgroud)
但后来我得到了这个:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/pearadox6/travellr/app.py", line 423, in feed
dashboard = session.query(Markers).filter(Markers.owner == f.friend_id for f in friends).all()
File "<string>", line 1, in <lambda>
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", …
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到一种方法来替换csv文件中使用python在两个双引号之间发生的所有逗号.
鉴于此类输入:
abc,def,"ghi,jkl,mno",pqr,stu
我想得到:
abc,def,"ghi|jkl|mno",pqr,stu
我尝试使用类似于以下内容的正面外观:
(?<=\")(this here should match every comma)(?=\")
但我无法让它发挥作用.有任何想法吗?
python ×9
pandas ×2
python-3.x ×2
excel ×1
for-loop ×1
function ×1
indexing ×1
inheritance ×1
list ×1
postgresql ×1
pycharm ×1
regex ×1
sqlalchemy ×1