以下是两行代码,用于生成大小为4的随机排列:
from numpy import random
t = random.permutation(4)
这可以在Python中执行,但不能在sage中执行,这会产生以下错误:
TypeError Traceback (most recent call last)
<ipython-input-3-033ef4665637> in <module>()
1 from numpy import random
----> 2 t = random.permutation(Integer(4))
mtrand.pyx in mtrand.RandomState.permutation (numpy/random/mtrand/mtrand.c:34842)()
mtrand.pyx in mtrand.RandomState.shuffle (numpy/random/mtrand/mtrand.c:33796)()
TypeError: len() of unsized object
为什么?
更多细节:我在Python 3中执行了代码,mtrand
也在Python 3目录中,这应该排除sage调用numpy的Python 2版本的可能性。
答案 0 :(得分:3)
要逃避Sage的preparser,您还可以将字母public function getUserTimeline() {
$client = new \GuzzleHttp\Client();
$token = "user_id-token";
$secret = "user_secret";
$request = $client->get('https://api.twitter.com/1.1/statuses/user_timeline.json?',
[ 'query' => [ 'consumer_key' => env('TWITTER_CLIENT_ID'),
'consumer_secret' => env('TWITTER_SECRET'),
'screen_name' => "a_screen_name",
'token' => $token,
'token_secret' => $secret,
'count'=>'2'
]]
));
dd(json_decode($request->getBody()));
}
(对于“raw”)附加到数字输入。
r
from numpy import random
t = random.permutation(4r)
优于4r
的优势在于int(4)
绕过了4r
预先准备者,而int(4)
被预先准备为int(Integer(4))
然后将Python整数转换为Sage整数
转换回Python整数。
以同样的方式,1.5r
会给你一个纯Python的浮点而不是
一个圣人“真实的数字”。
答案 1 :(得分:2)
这在Sage中不起作用的原因是Sage准备了它的输入,将“4”从Python int
变为Sage Integer
。在Sage中,这将起作用:
from numpy import random
t = random.permutation(int(4))
或者您可以关闭预分析器:
preparser(False)
t = random.permutation(4)