我正在阅读 Python Essential Reference,但我无法理解接收和发出返回值的协程。
这就是作者所说的 - “如果在 yield 表达式中提供了值,协程可以使用 yield 同时接收和发出返回值。”
下面是一个示例,说明了这一点:
def line_splitter(delimiter=None):
print("Ready to split")
result = None
while True:
line = (yield result)
result = line.split(delimiter)
Run Code Online (Sandbox Code Playgroud)
作者进一步补充说,在这种情况下,我们以与以前相同的方式使用协程。但是,现在对 send() 的调用也会产生结果。例如:
>>> s = line_splitter(",")
>>> s.next()
Ready to split
>>> s.send("A,B,C")
['A', 'B', 'C' ]
>>> s.send("100,200,300")
['100', '200', '300']
Run Code Online (Sandbox Code Playgroud)
我想知道上面的代码是如何工作的。
谢谢你的帮助。
我有一个包含 3 个字段的列表:
[weight, age, marks]
Run Code Online (Sandbox Code Playgroud)
我想在每一行上应用哈希函数并将这些哈希值存储为列表。如何继续?
我使用以下函数组合了体重、年龄、标记的各个列表zip():
list1=zip(weight,age,marks)
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题,我是Python新手。提前致谢。
我有几个使用迭代来搜索正确答案的数学算法.这是一个例子:
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b - a) > tol:
m = (a + b) / 2
if sign(fonction(m)) == sign(fonction(a)):
a = m
else:
b = m
return a, b
Run Code Online (Sandbox Code Playgroud)
我想计算算法通过循环得到a和b的次数.但是这不是一个for函数而且它不是一个列表,所以如果我使用的话,我无法清楚地指出我想要计算的对象enumerate.有没有办法计算这些循环?
注意:我不是要尝试更改代码本身.我正在寻找一种计算循环迭代的方法while,然后我可以将其用于其他情况.
class Agent:
def __init__(self, state):
self.state = state
#initialize values
state_0_agents = 10
state_1_agents = 10
numberofselections = 2 #number of agents who can choose to transition to the higher plane
#list of agents
agents = [Agent(0) for i in range(state_0_agents)]
agents.extend(Agent(1) for i in range(state_1_agents))
random.choice(agents)
Run Code Online (Sandbox Code Playgroud)
嘿!因此,我想从此“代理”列表中随机选择几个代理,其状态最终将更改为1。不幸的是,随机选择功能会在所有元素中进行选择。但是我只想随机选择状态为0的那些。
我希望如果不创建新列表就可能发生这种情况。
我的代码有以下几行
get_alarm_list = conn.query_alarms(query.filter_expr,
query.orderb)
print "type is:", type(get_alarm_list)
for alarm in get_alarm_list:
if alarm.severity == 'critical':
alarm.severity = 2
elif alarm.severity == 'moderate':
alarm.severity = 1
else:
alarm.severity = 0
alarm_list = sorted(get_alarm_list),
key=lambda a: a.severity,
reverse=True)
return [alarms.Alarm.from_db_model(alarm)
for alarm in alarm_list]
Run Code Online (Sandbox Code Playgroud)
输出:
type is <type 'generator'>
Run Code Online (Sandbox Code Playgroud)
列表中的对象是:
for alarm in get_alarm_list:
print alarm
Output:
<aodh.storage.models.Alarm object at 0x7fa4c0cb1c50>
<aodh.storage.models.Alarm object at 0x7fa4c0cb17d0>
<aodh.storage.models.Alarm object at 0x7fa4c0d86f10>
<aodh.storage.models.Alarm object at 0x7fa4ca372110>
<aodh.storage.models.Alarm object at 0x7fa4ca372190>
<aodh.storage.models.Alarm object at …Run Code Online (Sandbox Code Playgroud) 我一直很喜欢Python3.5中添加的元组理解:
In [128]: *(x for x in range(5)),
Out[128]: (0, 1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)
但是,当我return直接尝试元组理解时,我得到一个错误:
In [133]: def testFunc():
...: return *(x for x in range(5)),
...:
File "<ipython-input-133-e6dd0ba638b7>", line 2
return *(x for x in range(5)),
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
这只是一个轻微的不便,因为我可以简单地将元组理解分配给变量并返回变量.但是,如果我尝试在字典理解中加入元组理解,我会得到同样的错误:
In [130]: {idx: *(x for x in range(5)), for idx in range(5)}
File "<ipython-input-130-3e9a3eee879c>", line 1
{idx: *(x for x in range(5)), for idx in range(5)}
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我觉得这有点问题,因为在某些情况下,压缩对性能很重要.
在这些情况下使用字典和列表推导没有问题.当其他人做的时候,有多少其他情况是元组理解无法发挥作用?或许我使用它错了?
它让我想知道如果它的使用是如此有限或者我做错了什么的重点是什么?如果我没有做错什么,那么创建一个足够多的元组的最快/最pythonic方式是什么,以与列表和字典理解相同的方式使用?
我是python的新手,我正在学习lambda和map,但是当我尝试一些东西时,我发现一个循环没有执行,我想知道原因.
我知道这样做是没用的,但是当我迭代同一个列表两次时,第二次没有被执行.
salarios = map(lambda emp: emp.salario, empleados)
print("------SALARIO-------")
for salario in salarios:
print(salario)
print("-----SALARIO2--------")
for salario in salarios:
print(salario)
Run Code Online (Sandbox Code Playgroud)
我明白了
------SALARIO------- 6700 7500 2100 2150 1800 -----SALARIO2--------
我希望得到
------SALARIO------- 6700 7500 2100 2150 1800 -----SALARIO2-------- 6700 7500 2100 2150 1800
它为什么会发生?这是一些lenguaje优化?
我读了很多关于相关问题的问题,但没有一个问题能回答我的问题.我有两个清单:
List A = ['nike', 'adidas', 'reebok']
List B = ['sneakers', 'sneaker shoes', 'adidas shoes', 'nike', 'any shoe', 'all nikes', 'a nike shoe']
Run Code Online (Sandbox Code Playgroud)
现在,我想查看列表A的项是否存在于B中的某个位置,以便它返回:
List result: [False, False, True, True, False, True, True]
Run Code Online (Sandbox Code Playgroud)
True表示列表B中与A项匹配的实例.到目前为止,我使用的代码看起来非常低效.
for j in range(len(lista)):
for k in b:
if j in k:
lista[j] = 'DELETE'
cuent = lista.count('DELETE')
for i in range(cuent):
lista.remove('DELETE')
Run Code Online (Sandbox Code Playgroud)
在此先感谢,如果确实有这样的答案,我很抱歉 - 一小时后我已经失去了在stackoverflow-universe中找到它的所有希望:)
编辑:抱歉没有让自己清楚 - 我不是在寻找完全匹配,我正在寻找短语匹配.再次抱歉!
temp1 = []
filtered_tokens = ['once','upon','a','time','in','the','forest']
for i in range(len(filtered_tokens)):
for j in range(i+1,len(filtered_tokens)):
temp1.append(filtered_tokens[i]+' '+filtered_tokens[j])
Run Code Online (Sandbox Code Playgroud)
filetered_list,在上面的代码中包含10,000个单词,我只给出了示例列表。
我需要的输出:一次,一次,一次,一次,一次森林,一次,一次,一次,一次,一次,一次,一次,一次,一次,一次,一次,一次,一次时间,时间森林,在森林中,森林
当我编写逻辑并运行它时,编译器在运行时向我抛出内存不足异常。
请帮助我如何使用组合或任何其他python语言解决此问题。
谢谢
假设我有以下内容:
image_data_generator = ImageDataGenerator(rescale=1./255)
train_generator = image_data_generator.flow_from_directory(
'my_directory',
target_size=(28, 28),
batch_size=32,
class_mode='categorical'
)
Run Code Online (Sandbox Code Playgroud)
然后 mytrain_generator填充来自 的数据my_directory,其中包含两个子文件夹,将数据分为类0和1.
假设我还有另一个目录that_directory,也将数据拆分为类0和1. 我想train_generator用这个额外的数据来增强我的。
运行train_generator = image_data_generator.flow_from_directory('that_directory', ...)会从 中删除先前的数据my_directory。
有没有办法在DirectoryIterator不改变文件夹结构本身的情况下将两组数据增加或附加到一个生成器或一个像 a 一样操作的对象中?