模块中的某些元素collections似乎是大写的,而另一些则不是。其背后是否有具体的理由?
我有一堂课看起来像这样
Class myClass:
def __init__(self, key, value):
self.key = key
self.value = value
Run Code Online (Sandbox Code Playgroud)
其中key是一个字符串,并且value始终是 myClass 的元素列表,可能为空。
我想定义我自己的 iter 方法,该方法返回value.key每个valuein values。我试过
def __iter__(self):
return self
def __next__(self):
try:
self.value.next().key
except:
raise StopIteration
Run Code Online (Sandbox Code Playgroud)
但它永远循环。我究竟做错了什么?另外,如果我想具有 Python 2 / 3 兼容性,我应该添加该方法吗
def next(self):
return self.__next__()
Run Code Online (Sandbox Code Playgroud) 我试图模仿这个关于微调图像分类器的keras博客.我想使用fchollet repo上的Inceptionv3 .
初始是一个Model(功能API),所以我不能只做model.add(top_model)保留的Sequential.
如何添加组合两个功能Model?让我说我有
inputs = Input(shape=input_shape)
x = Flatten()(inputs)
predictions = Dense(4, name='final1')(x)
model1 = Model(input=inputs, output=predictions)
Run Code Online (Sandbox Code Playgroud)
对于第一个模型和
inputs_2 = Input(shape=(4,))
y = Dense(5)(l_inputs)
y = Dense(2, name='final2')(y)
predictions_2 = Dense(29)(y)
model2 = Model(input=inputs2, output=predictions2)
Run Code Online (Sandbox Code Playgroud)
为了第二个.我现在想结束到终端,从去inputs到predicions_2和链接predictions到inputs_2.
我试过使用,model1.get_layer('final1').output但我与类型不匹配,我无法使其工作.
我有两个DataFrames,我想执行相同的清洁操作列表.我意识到我可以合并为一个,并且可以合并到一个通道中,但我仍然很好奇为什么这个方法不起作用
test_1 = pd.DataFrame({
"A": [1, 8, 5, 6, 0],
"B": [15, 49, 34, 44, 63]
})
test_2 = pd.DataFrame({
"A": [np.nan, 3, 6, 4, 9, 0],
"B": [-100, 100, 200, 300, 400, 500]
})
Run Code Online (Sandbox Code Playgroud)
让我们假设我只想在没有NaNs的情况下使用原始数据:我试过了
for df in [test_1, test_2]:
df = df[pd.notnull(df["A"])]
Run Code Online (Sandbox Code Playgroud)
但test_2没有动过.另一方面,如果我这样做:
test_2 = test_2[pd.notnull(test_2["A"])]
Run Code Online (Sandbox Code Playgroud)
现在我第一个原始消失了.
我想知道在退出程序之前等待程序完成的正确方法是什么.阅读其他一些答案似乎bool chan会做到这一点,就像Playground链接一样
func do_stuff(done chan bool) {
fmt.Println("Doing stuff")
done <- true
}
func main() {
fmt.Println("Main")
done := make(chan bool)
go do_stuff(done)
<-done
//<-done
}
Run Code Online (Sandbox Code Playgroud)
我这里有两个问题:
为什么< - 完成工作?
如果我取消注释最后一行会发生什么?我有一个死锁错误.这是因为频道是空的,没有其他功能向它发送值?
有没有办法pd.Series从元组生成器创建一个?我的代码如下所示,但我确信有更好的方法:
import numpy as np
import pandas as pd
g = ((n, s) for n, s in [("A", 1), ("B", 2), ("C", 3), ("D", 4), ("E", 5)])
arr = np.array(list(g))
ind, val = arr[:, 0], arr[:, 1]
pd.Series(val, index=ind)
Run Code Online (Sandbox Code Playgroud) 我有一个函数可以接受两个可选np.array的参数.如果两者都通过,该功能应该执行一些任务.
def f(some_stuff, this=None, that=None):
...do something...
if this and that:
perform_the_task()
Run Code Online (Sandbox Code Playgroud)
如果没有传递任何可选参数,这将按预期工作.如果我通过了np.array然后我获得了错误
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)
是否有更紧凑的方法来检查额外的args是否通过?我想我可以安全地假设,如果他们通过,那么他们将是np.array.
我正在尝试在Go中构建一个Web搜寻器,我想在其中指定并发工作器的最大数量。只要队列中有要探索的链接,他们都将工作。当队列中的元素少于工作者时,工作者应该大声喊叫,但如果发现更多链接,请继续执行。
我试过的代码是
const max_workers = 6
// simulating links with int
func crawl(wg *sync.WaitGroup, queue chan int) {
for element := range queue {
wg.Done() // why is defer here causing a deadlock?
fmt.Println("adding 2 new elements ")
if element%2 == 0 {
wg.Add(2)
queue <- (element*100 + 11)
queue <- (element*100 + 33)
}
}
}
func main() {
var wg sync.WaitGroup
queue := make(chan int, 10)
queue <- 0
queue <- 1
queue <- 2
queue <- 3 …Run Code Online (Sandbox Code Playgroud) 我在功能构成和类型方面遇到了一些麻烦.我想撰写filter(返回一个列表)len,其中列表作为参数(技术上是一个,Foldable但我在这里简化).查看类型一切都如预期:
> :t length
length :: Foldable t => t a -> Int
> :t filter
filter :: (a -> Bool) -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
所以现在我期待的类型(len . filter)是
(length . filter) :: (a -> Bool) -> [a] -> Int
Run Code Online (Sandbox Code Playgroud)
而实际上是
> :t (length . filter)
(length . filter) :: Foldable ((->) [a]) => (a -> Bool) -> Int
Run Code Online (Sandbox Code Playgroud)
所以我似乎失去了一些论点.是否Foldable以某种方式包含在要求中我不理解?
请注意,如果我进行部分应用,一切都按预期工作:
> let myFilter = filter odd
> :t myFilter
myFilter …Run Code Online (Sandbox Code Playgroud) haskell types functional-programming combinators function-composition
我想从(非常长)列表中选择满足条件的特定元素.在我的特定情况下,列表中的每个项目都是一个类,我想要的条件是,例如,item.id == 1.
我开始了
[item for item in collection if item.id == 1]
Run Code Online (Sandbox Code Playgroud)
但我不想遍历整个列表,因为我确信只有一个元素满足条件.
另一种选择是
def check(collection):
for item in collection:
if item.id == 1:
return item
Run Code Online (Sandbox Code Playgroud)
有更有效的方法吗?Python 3是否具有内置功能?另一种选择可以是预处理列表以获得字典,例如
{item.id : item for item in collection}
Run Code Online (Sandbox Code Playgroud) python ×7
go ×2
list ×2
pandas ×2
arrays ×1
channel ×1
class ×1
class-names ×1
collections ×1
combinators ×1
generator ×1
goroutine ×1
haskell ×1
iteration ×1
keras ×1
numpy ×1
performance ×1
python-3.x ×1
types ×1
web-crawler ×1