我基本上需要的是检查列表的每个元素,如果某些条件适合我想从列表中删除它.
例如,让我们这样说吧
list=['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)
我基本上想写(原则上而不是我尝试实现的实际代码)
如果列表中的元素为"b"或"c",请将其从列表中删除,然后执行下一个操作.
但
for s in list:
if s=='b' or s=='c':
list.remove(s)
Run Code Online (Sandbox Code Playgroud)
失败是因为当'b'被移除时,循环取'd'而不是'c'作为下一个元素.那么有没有办法比将元素存储在单独的列表中并在之后删除它们更快?
谢谢.
让我们定义4个不同类别的点:
type PointType
x
y
end
mutable struct PointMut
x
y
end
immutable PointImmut
x
y
end
struct PointStruct
x
y
end
Run Code Online (Sandbox Code Playgroud)
PointType和之间有什么区别PointMut?为什么有人会选择一个而不是另一个?
此外之间有什么区别PointImmut和PointStruct?
我倾向于认为它们只是同义词,但我没有明确地说明这一点,所以我想知道某处是否存在隐藏的细微差别.
我有以下问题。我有一个f使用 numpy 函数在 python 中定义的函数。该函数在正实数上平滑且可积。我想构造该函数的双重反导数(假设反导数在 0 处的值和斜率均为 0),以便我可以在任何小于 100 的正实数上对其进行评估。
fat的反导数的定义x:
integrate f(s) with s from 0 to x
Run Code Online (Sandbox Code Playgroud)
fat的双重反导数的定义x:
integrate (integrate f(t) with t from 0 to s) with s from 0 to x
Run Code Online (Sandbox Code Playgroud)
的实际形式f并不重要,因此为了方便起见,我将使用一个简单的形式。但请注意,即使我的示例具有已知的封闭形式,但我的实际函数却没有。
import numpy as np
f = lambda x: np.exp(-x)*x
Run Code Online (Sandbox Code Playgroud)
我的解决方案是使用朴素数值积分将反导数构造为数组:
N = 10000
delta = 100/N
xs = np.linspace(0,100,N+1)
vs = f(xs)
avs = np.cumsum(vs)*delta
aavs = np.cumsum(avs)*delta
Run Code Online (Sandbox Code Playgroud)
这当然有效,但它给了我数组而不是函数。但这不是一个大问题,因为我可以aavs使用样条曲线进行插值来获取函数并摆脱数组。
from scipy.interpolate import …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的脚本从 mathematica 迁移到 sage。我陷入了一些看似基本的事情中。
我需要使用任意大的多项式,例如以下形式
a00 + a10*x + a01*y + a20 *x^2 + a11*x*y + ...
我只认为它们是 x 和 y 上的多项式,并且我需要给出这样的多项式 P 来获取其单项式列表。
例如,如果 P = a20*x^2 + a12*x*y^2 我想要一个 [a20*x^2,a12*x*y^2] 形式的列表。
我发现 sage 中的多项式有一个名为“coefficients”的类函数,它返回系数;还有一个名为“monomials”的类函数,它返回不带系数的单项式。将这两个列表相乘,得到我想要的结果。
问题是,为了使其工作,我需要显式地将所有 a 声明为变量,但这并不总是可能的。
有没有办法告诉 sage a[number][number] 形式的任何东西都是变量?或者有什么方法可以在 sage 中定义整个变量家族?
在一个完美的世界中,我想让 sage 表现得像 mathematica 一样,从某种意义上说,任何未定义的东西都被视为变量,但我想这太乐观了。
我想获取一个BigFloat数字的二进制数字。我认为最简单的方法是将数字转换为字节数组。在这个问题中,有一种方法可以为 做到这一点Float64,但是当我尝试同样的方法时,BigFloat它告诉我 write 没有方法BigFloat。
我怎样才能对朱莉娅做到这一点?
附言。我知道有一种方法可以将二进制数字作为字符串获取,但这会带来巨大的开销,我想避免它。
我是python的新手,我想要一些帮助.我创建了一些带有属性的类,以防止我传递毫无意义的参数.
所以我举了这个课
class match(object):
__teams=(None,None)
def setTeams(self,tms):
if type(tms) != type(list()) and type(tms) != type(tuple()):
raise Exception("Teams must be a list of length 2")
if len(tms) != 2:
raise Exception("Teams must be a list of length 2")
if (type(tms[0])==type(str()) or (type(tms[0])==type(unicode()))) \
and (type(tms[1])==type(str()) or type(tms[1])==type(unicode())):
self.__teams=tms
else:
raise Exception("Both teams must be strings")
return
teams=property(getTeams,setTeams)
Run Code Online (Sandbox Code Playgroud)
如果我写
match1=match()
match1.teams=(2,4)
Run Code Online (Sandbox Code Playgroud)
我应该得到一个例外,但是
match1.teams[0]=5
Run Code Online (Sandbox Code Playgroud)
不会引发异常并传递数字5.请记住,这不是全部类,我只记下了与我的问题相关的内容,所以假设代码的行为和我描述的一样.
我想这是因为所有内容都是通过python中的引用传递的,但是我必须小心不要将无意义的数据分配给我的对象,这首先会破坏了拥有属性的目的.
那么,有没有办法解决这个问题,除了不使用列表或我是否必须学会使用它?
我想有一系列元组.但似乎我不能附加一个元组.这是一个引发错误的最小代码示例.
julia> a = [(1,1),(2,2)]
2-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(2, 2)
julia> append!(a, (3,3) )
ERROR: MethodError: Cannot `convert` an object of type Int64 to an object of type Tuple{Int64,Int64}
This may have arisen from a call to the constructor Tuple{Int64,Int64}(...),
since type constructors fall back to convert methods.
Stacktrace:
[1] _append!(::Array{Tuple{Int64,Int64},1}, ::Base.HasLength, ::Tuple{Int64,Int64}) at ./array.jl:644
[2] append!(::Array{Tuple{Int64,Int64},1}, ::Tuple{Int64,Int64}) at ./array.jl:637
Run Code Online (Sandbox Code Playgroud)
我的语法有问题吗?我不明白为什么它抱怨它必须将数字转换为元组.是什么赋予了?
如果我写
import datetime
Run Code Online (Sandbox Code Playgroud)
如果我写
from datetime import timezone
Run Code Online (Sandbox Code Playgroud)
我得到错误 ImportError: cannot import name timezone
当然,调用datetime.timezone也不起作用。
我该如何调试?我浪费了一个小时,现在已经很晚了。
我使用数组,但我不需要在任何时候改变长度,但同时我在编写代码时不知道它们的长度.只有当我需要创建它们时才知道它的长度.
特别是我正在使用StaticArrays,我想定义一个类型的函数f(v::MVector{N,Float64}),它将接受MVector任何长度的输入.我该如何输入?