我知道我无法修改元组,而且我已经看到了从另一个像这里手动连接原始部分的元组创建元组的方法。
但是想知道是否已经出现了一些通过隐式创建一个新元组来“修改”元组的pythonic方法
>>> source_tuple = ('this', 'is', 'the', 'old', 'tuple')
>>> new_tuple = source_tuple.replace(3, 'new')
>>> new_tuple
('this', 'is', 'the', 'new', 'tuple')
Run Code Online (Sandbox Code Playgroud)
一个可能的实现看起来像这样,但我正在寻找一个内置的解决方案:
def replace_at(source, index, value):
if isinstance(source, tuple):
return source[:index] + (value,) + source[index + 1:]
elif isinstance(source, list):
return source[:index] + [value,] + source[index + 1:]
else:
explode()
Run Code Online (Sandbox Code Playgroud)
实现这样的功能并没有太多工作,但是就像Enum已经证明的那样,有时每个人都使用的实现会更好..
编辑:我的目标不是替换源元组。我知道我可以使用列表,但即使在这种情况下,我也会先复制一份。所以我真的只是在寻找一种方法来创建修改后的副本。
当我查看有关 WebSockets 的教程/文档时,我发现如下代码:
var ws = new WebSocket("ws://localhost:8765/dlt");
ws.onopen = () => {
// do some very important stuff after connection has been established
console.log("onopen");
}
Run Code Online (Sandbox Code Playgroud)
但这里的竞争条件又如何呢?JavaScript 中是否有某种方式避免了?
例如,此代码(仅在连接打开onopen 后分配)将失败:
var ws = new WebSocket("ws://localhost:8765/dlt");
setTimeout(() => {
ws.onopen = () => {
// do some very important stuff after connection has been established
console.log("onopen"); /// <== won't be called
}
}, 100);
Run Code Online (Sandbox Code Playgroud)
我能否确定在建立连接之前分配已完成?
WebSocket(我尝试使用自定义方法进行扩展onopen(),但这似乎不起作用)
class MyWebSocket extends WebSocket {
onopen() { …Run Code Online (Sandbox Code Playgroud) Very often I process single elements of tuples like this:
size, duration, name = some_external_function()
size = int(size)
duration = float(duration)
name = name.strip().lower()
Run Code Online (Sandbox Code Playgroud)
If some_external_function would return some equally typed tuple I could use map in order to have a (more functional) closed expression:
size, duration, name = map(magic, some_external_function())
Run Code Online (Sandbox Code Playgroud)
Is there something like an element wise map? Something I could run like this:
size, duration, name = map2((int, float, strip), some_external_function())
Run Code Online (Sandbox Code Playgroud)
Update: I know I can …
python functional-programming variable-assignment python-3.x iterable-unpacking
目前我正在初始化这样的list/ vector等等:
std::vector<int> vec_rand(target_size);
std::generate(vec_rand.begin(), vec_rand.end(), std::rand);
Run Code Online (Sandbox Code Playgroud)
..因为已经显示在这里.std::rand只是一个例子 - 它可以是任何功能.
我只是想知道是否有创建/调整大小的容器中,并对其进行初始化的任意值的值的方式在同一时间.
我知道我不需要期待大的性能提升,但是拥有s.th.会更好(而且更简洁).喜欢
vector<int> my_list(10, std::rand);
Run Code Online (Sandbox Code Playgroud)
要么
my_list.resize(target_size, std::rand);
Run Code Online (Sandbox Code Playgroud)
而不是首先resize()使用默认值,而不是用所需内容覆盖它们.
使用PlantUML,我为我的文档创建了一个小状态图:
@startuml
state Powered {
[*] -d-> Starting
Powered -r-> Starting : Some error
Starting -d-> Operational
}
[*] -d-> Powered : Power On
Powered -u-> [*] : Power Off
Powered -d-> Powered : Reset
@enduml
Run Code Online (Sandbox Code Playgroud)
(顺便说一句:PlantUML 是一个非常好的工具,可以从文本描述嵌入嵌入标记文档(如 asciidoc 或 reStructuredText)创建图形输出)
正如你所看到的图表绘制有点草率
正如文档所描述的那样,您可以通过书写-left->或-l->简称而不是仅仅对箭头方向产生一些影响-->。
有没有影响的方式方法如何,并在那里箭头画出?我真的很想只绘制水平或垂直的 直线。
在 Python 3 中,您可以为函数参数添加描述:
def foo(host: 'ip address for connection')
cool_stuff()
Run Code Online (Sandbox Code Playgroud)
并且您还可以提供预期的类型,稍后可以使用mypy以下方法进行检查:
def foo(host: str)
cool_stuff()
Run Code Online (Sandbox Code Playgroud)
两者在我看来都非常有用 - 有没有办法将两者结合起来并且仍然能够mypy检查一致性?
我正在编写一个图像查看器,它允许我执行一些操作。作为对某些操作(例如复制/移动/删除/..)的视觉反馈,我希望在应用程序窗口中间有一个像样的弹出窗口,告知已完成的操作,并在大约一秒钟后消失。
当然,我可以只使用一个小部件并修改它以满足我的需要:
..我只是想知道是否有专门用于此目的的东西
(我不是在谈论出现在窗口管理器的某些任务栏附近的托盘通知)
从PlantUML中的示例中可以看到,您可以在其中包含某些图形对象,例如文本
folder folder1 [
Here you can have some explanation with
====
--Markdown-- //formatting// ~~elements~~
]
Run Code Online (Sandbox Code Playgroud)
呈现给
您还可以folder(在其他元素中)通过嵌套其他项来对它们进行分组:
folder folder2 {
folder folder3 [
text bla bla
]
artifact art2 [
more text
]
}
Run Code Online (Sandbox Code Playgroud)
但是目前我看不到将两者结合的方法-一个带有一些解释性文字和嵌套元素的对象。
PlantUML有可能吗?(怎么样?)
我有一个数字列表,比如说numbers = [3,7,9,10],我想有一个包含相邻元素之间差异的列表-在给定的情况下,该元素必须少一个 diffs = [4,2,1]
当然,我可以创建一个新列表,遍历输入列表并手动编译结果。
我正在寻找一种优雅/功能(更不用说pythonic)的方式来做到这一点。在Python中,您将为此编写[j-i for i, j in zip(t[:-1], t[1:])]或使用numpy
。
reduce()JavaScript中也有一个/ list理解方法吗?
我知道您可以使用该命令指定用户和组 ID docker run,并且可以在构建映像时强制使用相同的 ID,以便轻松处理文件权限(例如,如此处所述)。
但是,如果您想在具有不同用户/组 ID 的不同计算机/用户之间重复使用包含用户定义的映像,该怎么办?
例如,在具有用户/组 ID 的计算机上,1000:1000您可以构建映像并使用这些值来创建用户。然后将push图像复制到某个注册表。1001:1000在另一台具有您想要的ID 的计算机(或只是另一个用户)上pull并使用该映像。
AFAIU,您要么必须知道要使用的 ID 并将其提供给,docker run并且您可能会在处理容器创建的文件时遇到麻烦。使用本地 ID 会让您在容器内遇到这些问题。
正确的?
通常的做法是什么?我希望有某种方法来“翻译”这些 ID,即在容器1001 外部和1000 内部都有 UID。目前我知道的唯一方法是:1. 忽略该问题,2. 不共享图像或 3. 使用图像内的用户 ID 进入容器,然后重写权限。
python ×3
javascript ×2
plantuml ×2
python-3.x ×2
arguments ×1
arrays ×1
c++ ×1
containers ×1
docker ×1
ecmascript-6 ×1
function ×1
graphviz ×1
immutability ×1
mypy ×1
nested ×1
qt ×1
statechart ×1
syntax ×1
tuples ×1
type-hinting ×1
userid ×1
websocket ×1