环/课程/列表
在本节中,我们将学习如何处理列表。
我们可以通过在方括号内定义列表项目来创建新的列表。
示例
aList = [1,2,3,4,5]
我们也可以使用 : 运算符创建新的列表
示例
aList = 1:5
aList2 = "a":"z"
我们也可以使用 list() 函数创建列表
语法
list = list(size)
示例
aList = list(10) # aList contains 10 items
.. 注意:列表索引从 1 开始
要向列表添加新项目,我们可以使用 Add() 函数。
语法
Add(List,Item)
示例
aList = ["one","two"]
add(aList,"three")
我们也可以使用 + 运算符来实现。
语法
List + item
示例
aList = 1:10 # create list contains numbers from 1 to 10
aList + 11 # add number 11 to the list
see aList # print the list
我们可以使用 len() 函数获取列表大小
语法
Len(List)
示例
aList = 1:20 see len(aList) # print 20
要从列表中删除项目,我们可以使用 del() 函数
语法
del(list,index)
示例
aList = ["one","two","other","three"]
Del(aList,3) # delete item number three
see aList # print one two three
要从列表中获取项目,我们使用以下语法
List[Index]
示例
aList = ["Cairo","Riyadh"]
see "Egypt : " + aList[1] + nl +
"KSA : " + aList[2] + nl
要设置列表中项目的 value,我们可以使用以下语法
List[Index] = Expression
示例
aList = list(3) # create list contains three items
aList[1] = "one" aList[2] = "two" aList[3] = "three"
see aList
要查找列表中的项目,我们可以使用 find() 函数
语法
Find(List,ItemValue) ---> Item Index
Find(List,ItemValue,nColumn) ---> Search in nColumn, returns the Item Index
示例
aList = ["one","two","three","four","five"]
see find(aList,"three") # print 3
示例
mylist = [["one",1],
["two",2],
["three",3]]
see find(mylist,"two",1) + nl # print 2
see find(mylist,2,2) + nl # print 2
我们也可以使用 binarysearch() 函数在排序后的列表中进行搜索。
语法
BinarySearch(List,ItemValue) ---> Item Index
BinarySearch(List,ItemValue,nColumn) ---> Search in nColumn, returns the Item Index
示例
aList = ["one","two","three","four","five"]
aList = sort(aList)
see binarysearch(aList,"three")
输出
five
four
one
three
two
4
我们可以使用 sort() 函数对列表进行排序。
语法
Sort(List) ---> Sorted List
Sort(List,nColumn) ---> Sorted List based on nColumn
示例
aList = [10,12,3,5,31,15]
aList = sort(aList) see aList # print 3 5 10 12 15 31
我们可以对字符串列表进行排序
示例
mylist = ["mahmoud","samir","ahmed","ibrahim","mohammed"]
see mylist # print list before sorting
mylist = sort(mylist) # sort list
see "list after sort"+nl
see mylist # print ahmed ibrahim mahmoud mohammed samir
我们可以根据特定列对列表进行排序。
示例
aList = [ ["mahmoud",15000] ,
["ahmed", 14000 ] ,
["samir", 16000 ] ,
["mohammed", 12000 ] ,
["ibrahim",11000 ] ]
aList2 = sort(aList,1)
see aList2
输出
ahmed
14000
ibrahim
11000
mahmoud
15000
mohammed
12000
samir
16000
我们可以使用 reverse() 函数反转列表。
语法
Reverse(List) ---> Reversed List
示例
aList = [10,20,30,40,50]
aList = reverse(aList)
see aList # print 50 40 30 20 10
要将项目插入列表中,我们可以使用 insert() 函数。
语法
Insert(List,Index,Item)
插入的项目将位于索引之后
示例
aList = [1,2,4,5]
insert(aList,2,3)
see aList # print 1 2 3 4 5
列表可能包含其他列表
示例
aList = [ 1 , [10,20,30] , 5 , [100,1000,5000] ]
aList2 = [
"one","two",
[3,4],
[20,30], ["three",
"four",
"five",[100,200,300]
]
]
see aList[2] # print 10 20 30
see aList[4][3] + nl # print 5000
see aList2[5][2] + nl # print four
see aList2[5][4][3] # print 300
我们可以使用赋值运算符复制列表(包括嵌套列表)。
示例
aList = [
"one","two",
[3,4],
[20,30], ["three",
"four",
"five",[100,200,300]
]
]
aList2 = aList # Copy aList to aList2
aList2[5] = "other" # modify item number five
see aList2[5] + nl # print other
see aList[5] # print three four five 100 200 300
列表是 `一等公民 <http://en.wikipedia.org/wiki/First-class_citizen>`_,我们可以将列表存储在变量中,将列表传递给函数,以及从函数中返回列表。
示例
aList = duplicate( [1,2,3,4,5] )
see aList[10] + nl # print 5
see mylist() # print 10 20 30 40 50
func duplicate list
nMax = len(list)
for x = 1 to nMax
list + list[x]
next
return list
func mylist return [10,20,30,40,50]
我们可以在第一次定义列表时使用列表项目。
示例
aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
see aList # print 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
列表是通过引用传递给函数的。这意味着被调用函数将在同一个列表上工作,并且可以修改它。
示例
func main
aList = [1,2,3,4,5] # create list, local in function main
myfunc(aList) # call function, pass list by reference
see aList # print 1 2 3 4 5 6 7 8 9 10
func myfunc list
list + [6,7,8,9,10]
在获取项目 value 或设置项目 value 时,我们可以使用字符串索引访问项目,而不是使用数字来确定项目索引,如果项目是一个包含两个项目的列表,并且第一个项目是字符串。
示例
aList = [ ["one",1] , ["two",2] , ["three",3] ]
see aList["one"] + nl +
aList["two"] + nl +
aList["three"] # print 1 2 3
这种类型的列表可以使用 : 和 = 运算符以更简洁的语法定义。
示例
aList = [ :one = 1 , :two = 2 , :three = 3 ]
see aList["one"] + nl +
aList["two"] + nl +
aList["three"] + nl # print 1 2 3
see aList[1] # print one 1
.. 提示:在标识符(一个词)之前使用 : 表示字面量
.. 注意:在列表定义中使用 = 会创建一个包含两个项目的列表,其中第一个项目是左侧,第二个项目是右侧。
我们可以使用字符串索引向列表添加新项目
示例
aList = []
aList["Egypt"] = "Cairo"
aList["KSA"] = "Riyadh"
see aList["Egypt"] + nl + # print Cairo
aList["KSA"] + nl # print Riyadh
这种类型的列表非常适合将参数传递给函数,因为参数的顺序并不重要(我们可以更改顺序)。
此外,一些参数可能是可选的。
示例
myconnect ( [ :server = "myserver.com" , :port = 80 ,
:username = "mahmoud" , :password = "password" ] )
func myconnect mypara
# print connection details
see "User Name : " + mypara[:username] + nl +
"Password : " + mypara[:password] + nl +
"Server : " + mypara[:server] + nl +
"Port : " + mypara[:port]