跳到主要内容

数据类型及其方法

基本数据类型

类型图标描述
Value简单类型,可以是String, Number, DateTime, Bool, Entity
Dict键只能为Value类型,值可以是任意数据类型
List元素可以是任意类型

Value二级格式

仅出现在公式栏提示中

类型图标
String
Number
Datetime
Bool
Entity

实体二级格式

出现在公式栏提示中

类型图标
Agent
Cell
Link

数据对象方法

方法名称功能描述所属数据类型参数1参数2是否修改原对象
delete删除指定下标的元素, 返回变化后的原对象List, Dictindex: Int / key: Value
remove删除指定值, 返回变化后的原对象Listvalue: Any
merge合并字典, 返回变化后的原对象Dictdicts: Dict, Dict, ...
sub根据下标列表获得子字典Dictkeys list: [Value/List/Set]
sub根据下标列表获得子列表Listindexes list: [Int]
sub根据指定位置和长度获得子字符串Stringposition: Intlength: Int
extend合并List, 返回变化后的原对象Listlists: List, List, ...
append在List后面插入值, 返回变化后的原对象Listvalue: Any, Any, ...
insert在List指定下标插入值, 返回变化后的原对象Listposition: Intvalue: Any
insert向Set插入值, 返回变化后的原对象Setvalue: Any
find查找List中元素为指定值的第一个下标Listvalue: Any
join用指定连接符,将List中元素连接为一个字符串Listseperator: String
contains判断 List 中是否有指定元素Listvalue: Any
contains判断 Dict 中是否有指定KeyDictkey: Any
contains判断 String 中是否有指定子串Stringstr: String
split用指定字符将字符串切割为ListStringseperator: String
replace指定new替换字符串中所有old, 返回新字符串Stringold: Stringnew: String
upper将字符串转换为全大写Stringvalue: String
lower将字符串转换为全小写Stringvalue: String
sort对List排序, 返回排序后的新对象Listsort ascending: Trueby= None / lambda / function
except从一个List中删除所有出现在给定List内的元素,并返回修改后的原对象Listexclude value: List
choice从List随机读取一个值List
pop从List中弹出指定位置元素, 默认弹出最后一个元素Listindex: Number
shuffle随机打乱List中的元素顺序List
copy复制对象any
add时间前进DateTimedelta: Numberunit='s':String, can be: "d", "h", "m", "s"
minus时间后退DateTimedelta: Numberunit='s':String, can be: "d", "h", "m", "s"
delta求时间差DateTimet2: DateTimeunit='s':String, can be: "d", "h", "m", "s"
timestamp获得时间戳单位秒DateTime

方法使用

  • 公式或表达式输入栏,使用格式:data_object_name.method()

  • 关于 List_object.sort 方法

    • 由于系统支持第二个参数(排序依据)使用Lambda函数,因此可以对元素为Entity、Dict、或List格式的List进行多级排序,如下案例:
案例

每个学生有三门课成绩,现在你需要对学生排序,规则是先按数学成绩权重0.7和物理成绩权重0.3的总成绩,如果相同再根据生物成绩,由高到低进行排序

  • 如果三门成绩是Agent的三个属性,那么你可以尝试通过以下表达式实现对Student Agent个体进行多级排序 Student.Individuals.copy().sort(False, by=lambda x: [x.Math * 0.7 + x.Physics * 0.3, x.Biology])

  • 如果学生资料以 {"Name": <String>, "Math": <Number>, "Physics": <Number>, "Biology": <Number>}为元素格式存储在一个名为Students的List变量中,那么你可以尝试以下表达式实现对学生List的多级排序 Students.sort(False, by=lambda x: [x["Math"] * 0.7 + x["Physics"] * 0.3, x["Biology"]])

  • 如果学生资料以 [Name<String>, Math<Number>, Physics<Number>, Biology<Number>]为元素格式存储在一个名为Students的List变量中,那么你可以尝试以下表达式实现对学生List的多级排序 Students.sort(False, by=lambda x: [x[1] * 0.7 + x[2] * 0.3, x[3]])