检查集合是否包含给定范围内的至少一个数字的最快方法是什么?
例如setA = set(1,4,7,9,10),lowerRange=6,upperRange=8,会因为7返回True.
目前我正在使用:
filtered = filter(lambda x: lowerRange<=x<=upperRange,setA)
Run Code Online (Sandbox Code Playgroud)
然后,如果filtered不为空,则返回True.
假设setA可以是一个非常大的集合,这是最佳解决方案吗?或者这是否遍历整个setA?
想知道是否有更有效的方法将多列分成某一列.比如说我有:
prev open close volume
20.77 20.87 19.87 962816
19.87 19.89 19.56 668076
19.56 19.96 20.1 578987
20.1 20.4 20.53 418597
Run Code Online (Sandbox Code Playgroud)
我想得到:
prev open close volume
20.77 1.0048 0.9567 962816
19.87 1.0010 0.9844 668076
19.56 1.0204 1.0276 578987
20.1 1.0149 1.0214 418597
Run Code Online (Sandbox Code Playgroud)
基本上,列'打开'和'关闭'除以"prev"列的值.
我能够做到这一点
df['open'] = list(map(lambda x,y: x/y, df['open'],df['prev']))
df['close'] = list(map(lambda x,y: x/y, df['close'],df['prev']))
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更简单的方法?特别是如果有10列要被相同的值划分呢?
我刚刚使用pandas datareader来获取过去两周左右的库存数据,并且工作正常.从昨天开始突然提供的日期不再有效.它只是给我过去一年的数据,我不能改变日期.用于处理注释掉的那个,但现在不是.我甚至改变它使用datetime对象,但仍然无法正常工作.任何的想法?我更新了熊猫和pandas_datareader仍然没有运气.使用另一台计算机仍然没有工作.他们刚刚更改了API吗?
from pandas_datareader import data
import datetime
#start = '2010-01-01'
#end = '2017-7-31'
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2017,7, 31)
f = data.DataReader('AAPL', 'google', start, end)
print(f.head())
Run Code Online (Sandbox Code Playgroud)
输出:
Open High Low Close Volume
Date
2016-09-19 115.19 116.18 113.25 113.58 47023046
2016-09-20 113.05 114.12 112.51 113.57 34514269
2016-09-21 113.85 113.99 112.44 113.55 36003185
2016-09-22 114.35 114.94 114.00 114.62 31073984
2016-09-23 114.42 114.79 111.55 112.71 52481151
Run Code Online (Sandbox Code Playgroud) 不知道如何最好地标题这个问题,但基本上我想生成一个基于现有数组的新numpy数组.唯一的区别是值已经转移到我指定的索引.还假设需要包装.
为简单起见,请考虑基本数组:
[[0,1,2],
[3,4,5],
[6,7,8]]
Run Code Online (Sandbox Code Playgroud)
如果我想将基数组中的零(0)或第一个元素移位到(0,1),它将是:
[[2,0,1],
[5,3,4],
[8,6,7]]
Run Code Online (Sandbox Code Playgroud)
如果我希望第一个元素移动到(2,2),它将是:
[[4,5,3],
[7,8,6],
[1,2,0]]
Run Code Online (Sandbox Code Playgroud) 我有一个大整数,如'max'.为什么最大值除以'27'并不等于完全省略第一个数字'27'.从技术上讲它们应该是平等的,但在python中它们不是.在这个例子中,如何通过将最大值除以'27'得到相同的答案?
max = 27*37*47*30*17*6*20*17*21*43*5*49*49*50*20*42*45*1*22*44
no27 = 37*47*30*17*6*20*17*21*43*5*49*49*50*20*42*45*1*22*44
div27 = (max/27)
modno27 = no27%40
moddiv27 = div27%40
Run Code Online (Sandbox Code Playgroud)
打印的值是:
no27 = 35882855955274315680000000
div27 = 3.5882855955274316e+25
modno27 = 0
moddiv27 = 8.0
Run Code Online (Sandbox Code Playgroud) 我似乎无法弄清楚如何使用set comprehension将以下内容编写成一行代码.如果它不可能有更快的方式来做我想在这里做的事情?基本上只是将字典的所有值都集成到一个集合中.某些值可以是空集.一个简单的例子如下
d = {1:set(),2:{1,2,3},3:{4}}
t = set()
for k, v in d.items():
if len(v) > 0:
t.update(v)
print(t)
Run Code Online (Sandbox Code Playgroud)
产量
{1,2,3,4}
Run Code Online (Sandbox Code Playgroud) 如果我有清单:
ex_list = [x,y,z]
Run Code Online (Sandbox Code Playgroud)
但我想要
[x, y, z, ]
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我试过了:
ex_list.append(None)
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
试图在python中了解更多的generator/send函数.我在链接中读到了一些内容:生成器发送功能的目的,帮助了很多.
但我想了解下面的代码.为什么有next(checker)必要?发送功能是否自动询问发电机中的下一个项目?我尝试next(checker)过在for循环之前,但是它的功能不同.我认为send函数将'attempt'作为x发送并产生是否x == password.我只是不明白为什么必须在循环中使用下一个(检查器).
def checkPassword(attempts, password):
def check():
while True:
x = yield
yield x == password
checker = check()
for i, attempt in enumerate(attempts):
next(checker)
if checker.send(attempt):
return i + 1
return -1
Run Code Online (Sandbox Code Playgroud)
上述功能基于以下问题:
"为了验证你的功能,你想在本地测试它.给定一个尝试列表和正确的密码,返回第一次正确尝试的从1开始的索引,如果没有则返回-1.
例
对于attempts = ["hello", "world", "I", "like", "coding"]和
password = "like",输出应为checkPassword(尝试,密码)= 4."
刚开始在我的 virutalenv 中使用 scapy,但我无法在其中运行 'sudo scapy'。我正进入(状态:
sudo: scapy: command not found
Run Code Online (Sandbox Code Playgroud)
如果我只是运行 scapy,当我尝试发送一个简单的数据包时
send(IP(dst="www.google.com"/ICMP())
Run Code Online (Sandbox Code Playgroud)
我得到了permissionError 操作的许可。我如何让它工作?
不确定标题这个问题的最佳方式,但是我如何覆盖或执行min(a, b)我max(a, b)制作的类的对象?我可以像下面一样覆盖gt和 lt 但我想覆盖最小值或最大值,以便我能够使用类似max(a, b, c ,d). 该类也将有多个属性,但我认为对于这个例子来说 2 个就足够了。
class MyClass:
def __init__(self, item1, item2):
self.item1 = item1
self.item2 = item2
def __gt__(self, other):
if isinstance(other, MyClass):
if self.item1 > other.item1:
return True
elif self.item1 <= other.item1:
return False
elif self.item2 > other.item2:
return True
elif self.item2 <= other.item2:
return False
def __lt__(self, other):
if isinstance(other, MyClass):
if self.item1 < other.item1:
return True
elif self.item1 >= other.item1:
return False
elif …Run Code Online (Sandbox Code Playgroud)