操作符和全局函数
全局函数图标

操作符
| 符号 | 功能 |
|---|---|
| + | 加法(取正) |
| - | 减法(取反) |
| * | 乘法 |
| / | 除法 |
| ** | 乘方 |
| % | 取模 |
| // | 整除 |
| == | 相等 |
| != | 不等 |
| < | 小于 |
| > | 大于 |
| >= | 不小于 |
| <= | 不大于 |
| and | 逻辑与 |
| or | 逻辑或 |
| not | 逻辑非 |
| & | 位与 |
| | | 位或 |
| ~ | 位非 |
| ^ | 位异或 |
| << | 位左移 |
| >> | 位右移 |
| in | 判断是否属于 |
| -> | 指定数字或字母范围,仅在批量构造字典键时 |
全局函数明细
| 类型 | 名称 | 参数1 | 参数2 | 参数3 | 功能 | 详细用法 |
|---|---|---|---|---|---|---|
| 通用 | len | value: List, Set, Str, Dict | 返回复杂类型数据的长度 | |||
| 通用 | range | start: Number / DateTime | end: Number / DateTime | step=1 | 生成指定范围的list | |
| 通用 | copy | value: Any | 复制对象 | |||
| 通用 | map | function: Function / lambda | object: List/Number, List/Number,... | 将函数应用于List的每个元素并返回新List | 1 | |
| 通用 | filter | function: Function / lambda | object: List/Dict | 将函数应用于List的每个元素, 将函数返回值为True的位置的元素组合成新的List/Dict | 2 | |
| 通用 | rgb | red: Int | green: Int | blue: Int | 传入三个[0, 255]内的值, 生成RGB十六进制颜色代码字符串 | |
| 通用 | hsl | h: Number | s: Number | l: Number | 传入HSL的三个值, 生成HSL十六进制颜色代码字符串 | |
| 通用 | type | value: any | 返回value数据类型的字符串 | |||
| 转换 | string | value: Value | 任意简单类型转换为String | |||
| 转换 | number | value: String | 将字符串转换为Number | |||
| 转换 | int | value: Number | Number转换为整数(向下) | |||
| 转换 | bool | value: Value | 简单类型转换为Bool, ""和0为False | |||
| 转换 | list | empty / value: List /value: Set/ value: Dict | 转换为List | 3 | ||
| 转换 | set | empty / value: List /value: Set/ value: Dict | 转换为Set | 类似3 | ||
| 转换 | dict | 生成空dict, 同 | 类似3 | |||
| 随机 | random | a: Number | b: Number | 返回一个符合均匀分布的随机数, 范围[a, b) | ||
| 随机 | randint | a: Number | b: Number | 返回一个符合均匀分布的随机整数, 范围[a, b] | ||
| 随机 | normal | u: Number | v: Number | 返回一个符合均值为 u,标准差为 v 的正态分布随机数 | ||
| 随机 | possion | u: Number | 返回一个符合指定均值(u)的泊松分布随机数 | |||
| 随机 | bernoulli | p: Number | 根据概率 p 的伯努利分布返回一个随机数(0 或 1) | |||
| 随机 | random_exp | lambda: Number >0 | 根据到达率生成指数分布随机值 | |||
| 数学 | abs | value: Number | 取绝对值 | |||
| 数学 | sqrt | value: Number | 取平方根 | |||
| 数学 | cbrt | value: Number | 取立方根 | |||
| 数学 | exp | value: Number | 返回以e为底的指数函数 →e^x | |||
| 数学 | exp2 | value: Number | 返回以2为底,x为指数的幂 →2^x | |||
| 数学 | log | value: Number | 返回指定值的以e为底数的对数 | |||
| 数学 | log2 | value: Number | 求以2为底的对数 | |||
| 数学 | log10 | value: Number | 求以10为底的对数 | |||
| 数学 | sin | radian: Number | 正弦,参数为弧度 | |||
| 数学 | cos | radian: Number | 余弦 | |||
| 数学 | tan | radian: Number | 正切 | |||
| 数学 | asin | value: Number | 反正弦 | |||
| 数学 | acos | value: Number | 反余弦 | |||
| 数学 | atan | value: Number | 反正切, (-PI/2,PI/2) | |||
| 数学 | atan2 | y: Number | x: Number | 返回与X轴正向夹角(-PI, PI) | ||
| 数学 | sinh | value: Number | 双曲正弦 | |||
| 数学 | cosh | value: Number | 双曲余弦 | |||
| 数学 | tanh | value: Number | 双曲正切 | |||
| 数学 | asinh | value: Number | 反双曲正弦 | |||
| 数学 | acosh | value: Number | 反双曲余弦 | |||
| 数学 | atanh | value: Number | 反双曲正切 | |||
| 数学 | factorial | n: Int | 返回非负整数的阶乘n! | |||
| 数学 | trunc | value: Number | 移除小数部分 | |||
| 数学 | ceil | value: Number | 向上取整 | |||
| 数学 | floor | value: Number | 向下取整 | |||
| 数学 | round | value: Number | p=0 | 四舍五入保留p位小数 | ||
| 数学 | isnan | value: Number | 判断数值是否为nan | |||
| 数学 | isinf | value: Number | 判断数值是否为inf(无穷,正负inf均为True) | |||
| 统计 | max | value list: [Number] / [Number]/value set: {Number} | 取多个Number或一个List中的最大值 | |||
| 统计 | min | value list: [Number] / [Number]/value set: {Number} | 取最小值 | |||
| 统计 | mean | value list: [Number] / [Number]/value set: {Number} | 取均值 | |||
| 统计 | median | value list: [Number] / [Number]/value set: {Number} | 取中位数 | |||
| 统计 | sum | value list: [Number] / [Number]/value set: {Number} | 求和 | |||
| 统计 | prod | value list: [Number] / [Number]/value set: {Number} | 累乘 | |||
| 统计 | var | value list: [Number] / [Number]/value set: {Number} | 方差 | |||
| 统计 | std | value list: [Number] / [Number]/value set: {Number} | 标准差 | |||
| 内置 | NearestDistance | entity1: Agent / Cell / coordinate1: [Number, Number] | entity2: Agent / Cell / coordinate2: [Number, Number] | (space: Cell) | 考虑环绕与否的Cell上的最近距离 | 4 |
| 内置 | AngleTowards | entity1: Agent / Cell / coordinate1: [Number, Number] | entity2: Agent / Cell / coordinate2: [Number, Number] | (space: Cell) | Cell上的基于最近距离的角度 | 类似4 |
| 局部构造 | ProductJoin | lists: List, List, ... | sep = "-" | 计算多个列表的笛卡尔积,并将每个元素用分隔符连接为字符串,仅用于批量构造字典键时 | ||
| 构造 | defaultdict | value: Any | 生成默认值为value的dict | |||
| 构造 | datetime | year, month, day, hour=0, minute=0, second=0 | 以指定年月日时分秒生成日期值,除second外的参数将丢弃小数部分 | |||
| 构 造 | datetime | value: String(yyyy-mm-ddTHH:MM:SS) | 以ISO 8601 时间格式生成日期 | |||
| 构造 | fromtimestamp | ts: Number | 从timestamp生成日期 |
详细用法补充说明
map
-
将函数逐一作用于List的每个元素,最终返回一个全新List
-
第一个参数为函数,可以是函数名,也可以是由lambda关键字定义的匿名函数。该函数需要的参数数量决定了后续被处理目标的数量
-
后面的所有参数均为待处理目标,可以是List类型,也可以是其它数据类型
- 如果多个待处理目标都是List格式,系统按最短的处理
- 如果待处理目标中有 Value,系统将按“广播”方式处理,即始终采用该值并按最短List长度处理
- 如果待处理目标中有Dict,系统将按其所有的key组成的List进行处理,但不保证顺序
例子
-
map(abs, [1,-2,3])的返回值为[1,2,3] -
map(lambda x,y: 2*x + y, [1,2,3], 4)将返回[6,8,10]
filter
- 将函数应用于 List 的每个元素或 Dict 的每个 Key,将函数返回值为
True的位置上的元素组合成新的 List 或 Dict - 第一个参数为函数,可以是函数名也可以是由lambda关键字定义的匿名函数,该函数返回值应为Bool格式
- 第二个参数为待处理目标,如果是List格式,则最终返回值也为List格式,如果是Dict格式,则最终返回值也为Dict格式
例子
-
filter(lambda x: x>0, [1,-2,3])的返回值为[1,3] -
filter(lambda s: s.contains("x"), {"x1":20, "x2":30,"y1":40})将返回{"x1":20, "x2":30}
list
- 参数是List时为复制
- 参数是Set时取所有元素生成List
- 参数是Dict时取所有Key生成List
- 无参数生成空List
NearestDistance
- 关于inf
- 表达式
1/0将返回inf,而不是报错 - 表达式
isinf(number("-inf"))和isinf(number("inf"))都将返回True - 表达式
number("inf") > 0或number("inf") > number("-inf")将返回True