考虑:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
Run Code Online (Sandbox Code Playgroud)
因此,正如预期的那样,推进迭代器是通过改变同一个对象来处理的.
在这种情况下,我希望:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
Run Code Online (Sandbox Code Playgroud)
跳过每个第二个元素:调用next应该使迭代器前进一次,然后循环的隐式调用应该再次前进 - 并且第二次调用的结果将被分配给i.
它没有.循环打印列表中的所有项目,而不跳过任何项目.
我的第一个想法是,这可能发生,因为循环调用iter它传递的内容,这可能会给出一个独立的迭代器 - 事实并非像我们所说的那样iter(a) is a.
那么,为什么next在这种情况下似乎没有推进迭代器呢?
Scipy和Numpy在它们之间有三个不同的函数来寻找给定方阵的特征向量,它们是:
特别关注我最后两个留下的所有可选参数都保留其默认值并且a/ A是实值的情况,我很好奇这三个文档之间的差异 - 特别是:
k争论?A稀疏?(从数学上讲,而不是表示为scipy稀疏矩阵)如果这个假设不成立,它可能是效率低下,甚至是错误的结果吗?我正在实现一种算法,它要求我在(严格二维)numpy数组中查看非重叠的连续子矩阵.例如,对于12乘12
>>> a = np.random.randint(20, size=(12, 12)); a
array([[ 4, 0, 12, 14, 3, 8, 14, 12, 11, 18, 6, 6],
[15, 13, 2, 18, 15, 15, 16, 2, 9, 16, 6, 4],
[18, 18, 3, 8, 1, 15, 14, 13, 13, 13, 7, 0],
[ 1, 9, 3, 6, 0, 4, 3, 15, 0, 9, 11, 12],
[ 5, 15, 5, 6, 4, 4, 18, 13, 10, 17, 11, 8],
[13, 17, 8, 15, 17, 12, 7, 1, 13, …Run Code Online (Sandbox Code Playgroud) 根据文件,
__new__()是一个静态方法(特殊的,因此您不需要声明它),它将请求实例的类作为其第一个参数.
它显然不是类方法,但通常看起来像一个,除了手动调用的任何客户端__new__需要显式传入类参数.例如:
>>> str.__new__()
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
str.__new__()
TypeError: str.__new__(): not enough arguments
>>> str.__new__(str)
''
Run Code Online (Sandbox Code Playgroud)
但是替代对象创建API -例如,所有八个备选datetime构造 - 是平时classmethodS,SO是datetime.now()按预期工作.
为什么这样__new__设置?
我知道它的存在和目的collections.namedtuple,但我注意到,至少在IDLE(3.2.2)中,这个工厂函数也在functools:
>>> import functools
>>> functools.namedtuple
<function namedtuple at 0x024B41E0>
Run Code Online (Sandbox Code Playgroud)
它也collections按预期存在,并且功能相同:
>>> import collections
>>> collections.namedtuple is functools.namedtuple
True
Run Code Online (Sandbox Code Playgroud)
没有我能找到的文档提到namedtuple除了集合以外的任何地方.那么:这个标准,还是只是一种空洞的怪异?如果它只是空闲,它是一个错误还是一个为什么会namedtuple出现在两个地方 - 实际上,在functools所有地方它的歪曲心态是否有意义?
假设我有3个不同的列表
col1 = ['2006-03-28','2006-04-05','2006-04-06']
col2 = ['IBM', 'MSFT', 'IBM']
col3 = [1000, 1000, 500]
Run Code Online (Sandbox Code Playgroud)
将这些列表组合在另一个列表中的最有效方法是什么,如下所示:
col = [('2006-03-28', 'IBM', 1000),
('2006-04-05', 'MSFT', 1000),
('2006-04-06', 'IBM', 500)]
Run Code Online (Sandbox Code Playgroud) 抱歉,我不得不问,但我环顾四周,发现没有任何帮助。
问题就在这里;我有一个数组列表:
list = [["I","Am"], ["An","Array", "Within", "An Array"]]
Run Code Online (Sandbox Code Playgroud)
我想按“列表”包含的数组的长度对“列表”进行排序。
到目前为止我已经尝试过:
list.sort()
#and
def nc(x):
return len(x)
list.sort(key=nc)
Run Code Online (Sandbox Code Playgroud)
但这些都返回“无”。我真的很感激一些帮助。先感谢您!
我正在做一个涉及使用数值方法来解决微分方程的问题,并认为这可能是学习一些基本Haskell的好机会.我有以下重现关系:
和初始条件u(x, 0) = x^2.我将这些翻译成Haskell(从特定问题中为a,b,c,h和k输入适当的值,并注意到u_ij被定义为u(i*h, j*k)):
u :: (Floating a, Eq a) => a -> a -> a
u x 0 = x*x
u x t = a*k / b*h * (u (x-h) (t-k))
+ (1 - (3*k/2*h))*(u x (t-k))
+ k/b * cos x
where
a = 3
b = 2
k = 0.1
h = 0.2
main = putStrLn (show (u 1 0.5))
Run Code Online (Sandbox Code Playgroud)
这似乎无限期地运行.我最好猜测为什么浮点表示意味着u x 0模式永远不会匹配.我习惯在其他语言中处理这个问题的方法是检查值之间的绝对差异是否在某个合适的epsilon中,但这似乎不适用于模式匹配.因此,浮点和模式匹配似乎从根本上是不兼容的.这可能是一个问题,如果是这样的话,在这样的情况下,有没有一种规范的方法来避免这种情况?
我发现以下示例有点令人惊讶:
>>> class Foo:
def blah(self):
pass
>>> f = Foo()
>>> def bar(self):
pass
>>> Foo.bar = bar
>>> f.bar
<bound method Foo.bar of <__main__.Foo object at 0x02D18FB0>>
Run Code Online (Sandbox Code Playgroud)
我希望绑定方法与每个特定实例相关联,并在构造时放入其中.似乎合乎逻辑的是,绑定方法必须对每个实例都不同,以便它知道将哪个实例传递给底层函数 - 实际上:
>>> g = Foo()
>>> g.blah is f.blah
False
Run Code Online (Sandbox Code Playgroud)
但是我对这个过程的理解显然是有缺陷的,因为我不希望将一个函数分配给一个类属性会把它放在那时已经创建的实例中.
所以,我的问题是双重的 -
我试图让 Python 用 500 只股票的收盘价填充列表。虽然该代码似乎仅适用于少数股票,但大量股票会带来问题。Python不断给我以下错误:“ OneClose.append(Data[i][4]) IndexError: list index out of range.”我不知道如何解决这个问题。无论我在范围字段中输入什么(在本例中为 31),错误仍然存在。
raw = open('C:\Model\Stocks\list.txt', 'r').read()
stocks = raw.split('\n')
for stock in stocks:
Data = ystockquote.get_historical_prices(stock, '20120501', '20120716')
# Create empty lists, quick and dirty
OneClose = [ ]
OneDate = [ ]
# Populate lists from downloaded data
for i in range(1, 31):
OneDate.append(Data[i][0])
OneClose.append(Data[i][4])
Run Code Online (Sandbox Code Playgroud)
Data 包含:
Data = [['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Clos'],
['2012-07-13', '86.32', '87.83', '86.32', '87.54', '1937700', '87.5'],
['2012-07-13', '86.32', '87.83', …Run Code Online (Sandbox Code Playgroud)