好的,所以我有两个列表,如下:
[1, 2, 3, 4, 5],[4, 5, 6, 7].[1, 2, 3, 4, 5],[3.5, 4, 5, 6, 7][9, 1, 1, 8, 7],[8, 6, 7].我想合并列表,以便保留现有订单,并在最后可能的有效位置合并,以便不丢失任何数据.此外,第一个列表可能很大.我目前的工作代码是这样的:
master = [1,3,9,8,3,4,5]
addition = [3,4,5,7,8]
def merge(master, addition):
n = 1
while n < len(master):
if master[-n:] == addition[:n]:
return master + addition[n:]
n += 1
return master + addition
Run Code Online (Sandbox Code Playgroud)
我想知道的是 - 有更有效的方法吗?它可以工作,但我对此有点怀疑,因为它可以在我的应用程序中遇到大的运行时 - 我正在合并大量的字符串列表.
编辑:我预计[1,3,9,8,3,4,5],[3,4,5,7,8]合并为:[1,3,9,8,3 , 4,5 …
我究竟如何从ttk更改Entry小部件的背景颜色?到目前为止我所拥有的是:
self.estyle = ttk.Style()
self.estyle.configure("EntryStyle.TEntry", background='black')
self.estyle.map("EntryStyle.TEntry",
foreground=[('disabled', 'yellow'),
('active', 'blue')],
background=[('disabled', 'magenta'),
('active', 'green')],
highlightcolor=[('focus', 'green'),
('!focus', 'red')])
self.urlentry_v = StringVar()
self.urlentry = ttk.Entry(self.input_frame, style="EntryStyle.TEntry",
textvariable=self.urlentry_v)
Run Code Online (Sandbox Code Playgroud)
基本上,我已经改变了我能想到的一切,但是文本输入仍然是顽固的白色.
另外,有没有办法改变边框颜色?
我将如何在同一个程序中组合两个 asyncio 库?
对于上下文,我希望使用Discord api与 aiohttp,它们都是异步事件循环驱动的。我可能也想在混合中添加一个异步 irc 库。
但是,我不明白它们将如何一起操作。我相信理论上我会实现该程序,以便所有类实例都使用相同的 asyncio 事件循环实例,然后将所有运行函数合并为一个,最终调用事件循环。
但是,我想知道是否有更优雅的方法来做到这一点?
我正在研究当前的玩具代码,试图理解asyncio模块.
import asyncio
import os, sys, traceback
from time import time
os.environ['PYTHONASYNCIODEBUG'] = '1'
print(sys.version)
def timed_fib(n):
def fib(n):
return fib(n - 1) + fib(n - 2) if n > 1 else n
a = time()
return fib(n), time() - a
def process_input():
text = sys.stdin.readline()
n = int(text.strip())
print('fib({}) = {}'.format(n, timed_fib(n)))
@asyncio.coroutine
def print_hello():
while True:
print("{} - Hello world!".format(int(time())))
yield from asyncio.sleep(3)
def main():
loop = asyncio.get_event_loop()
loop.add_reader(sys.stdin, process_input)
loop.run_until_complete(print_hello())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
然而,尝试运行它会产生下面令人难以置信的神秘回溯.如您所见,调试环境变量在上面代码的第五行中设置,但是,回溯仍然非常无益,如下所示:
3.4.3rc1 …Run Code Online (Sandbox Code Playgroud) 有没有一种方法,以增加在单个操作(而不是总和)多个阵列在一起吗?显然,np.sum并且np.add是不同的操作,但是,我现在正在努力解决的问题是np.add一次只需要两个数组。我可以利用
output = 0
for arr in arr_list:
output = output + array
Run Code Online (Sandbox Code Playgroud)
或者
output = 0
for arr in arr_list:
output = np.add(output, array)
Run Code Online (Sandbox Code Playgroud)
是的,这是可行的。但是,如果我可以简单地做一些变体就好了
output = np.add_multiple(arr_list)
Run Code Online (Sandbox Code Playgroud)
这存在吗?
编辑:我最初没有说清楚。我特别要求,它的功能不要求一个阵列被构建阵列,如我的数组相等尺寸的不和要求的广播,例如:
a = np.arange(3).reshape(1,3)
b = np.arange(9).reshape(3,3)
a, b = a[:,:,None,None], b[None,None,:,:]
Run Code Online (Sandbox Code Playgroud)
这些工作:
a + b # Works
np.add(a, b) # Works
Run Code Online (Sandbox Code Playgroud)
这些没有,并以相同的例外失败:
np.sum([a, b], axis = 0)
np.add.reduce([a, b])
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud)