Q 语言初学者系列:(3)Lists 初级

声明:本系列文章全部参考自官方教程,由于缺乏中文资料而且本人E文实在太菜,对于E文较好的朋友可以直接通过下面的链接访问官方网站提供的教程,
欢迎大家一起学习讨论。
hhttps://code.kx.com/trac/wiki/QforMortals2/contents
用户名跟密码为anonymous
转自:http://blog.csdn.net/kraussyin/article/details/47036363
Overview
      我们都知道,复杂的数据跟数据集数据都是建立在简单的数据类型之上的,在学习Q语言的过程中深入理解列表以及列表的操作是非

常重要的。虽然概念是很简单的,但是很快你就会发现其实并不简单。

Introduction to Lists
      列表是一个简单跟有序的数据集,简单的说,列表里面存储着一序列的有序的基本数据类型数据或者其它数据类型的数据,接下来我们将人简单的基本数据类型列表讲起。

List Definition and Assignment
      一个列表的写法是在一个小括号里面通过分号将各个元素通过分号分隔开,为了可读性,我们通常在每个元素后面敲上一个空格。(事实上,一个简单的数据类型的值我们也可能把它看成是一个只拥有一个元素的列表) 
          e.g.
          q)(1;2;3)
          q)("a";"b";"c";"d")
          q)(`Life;`the;`Universe;`and;`Everything)
          q)(-10.0; 3.1415e; 1b; `abc; "z")

      在上面的例子中,前三个都只包含统一的数据类型,但最后一个却不是,它是一个复合类型的列表,另外还可以有内联的统一数据类型的列表跟内联的混合的数据类型列表。另外需要注意事的是 (1; 2) 跟 (2; 1) 是两个不同的列表,也就是说列表并不是无序的。
      我们还可以将列表赋值给一个变量,写法跟声明变量并赋值没什么两样。 
          e.g.
          q)L1:(1;2;3)
          q)L2:("a";"b";"c";"d")
          q)L3:(`Life;`the;`Universe;`and;`Everything)
          q)L4:(0b;1b;0b;1b;1b;0b)
          q)L5:(-10.0;3.1415e;1b;`abc;"z")

      甚至我们还可以这样子写:

          q)L:100 200 300                                             / 一个int类型列表
          q)H:1 2 255h                                                  / 一个short类型列表
          q)F:123.4567 9876.543 99.99                          / 一个float类型列表
          q)bits:01011b                                                 / 一个boolean类型列表
          q)bytes:0x20a1ff                                             / 一个byte类型列表
          q)symbols:`Life`the`Universe`and`Everything   / 一个symbol类型列表
          q)chars:"so long"                                             / 一个char类型列表


count

      通过count方法可以获取一个列表所包含的元素的数量。有关Functions的内容将在下一节讲到。

          e.g.
          q)L1:(1; 2; 3)
          q)count L1
          3

Empty List

      有的时候我们想创建一个不包括任何元素的列表的时候怎么办?其实很简单,只是不往小括号里面添加元素就行了。
         e.g.
         q)L:( )

         q)count L

         0

      以接下来的章节我们还会讲到如何去创建一个指定类型的空列表。

Indexing

      访问一个列表元素的时候我们可以通过索引,跟大多数语言一样,索引通常都是从 0 开始的,Q 语言也不例外,一个包含了 n 个元素的列表,它的有效索引就是 0 到 n-1。 下面的例子将演示了如何通过索引去获取列表里的一个元素:

         e.g.

         q)L:(-10.0;3.1415e;1b;`abc;"z") 
         q)L[0]
         -10f
         q)L[1]
         3.1415e 
         q)L[2]
         1b 
         q)L[3]
         `abc 
         q)L[4]
         "z"
         q)L[5]
         0n

      如果索引超过了有效范围,那么将会返回一个空值:

         e.g.
         q)L[5]
         0n

      当索引值为null的时候,将会返回所有的元素:
         e.g.
         q)L[]
         -10f
         3.1415e
         1b
         `abc
         "z"

      在语法上我们可以使用::来表示null,所以L[]跟L[::]结果一样。

      同样我们也可以通过索引给列表中的某一个元素重新赋值,需要注意一点,对于简单列表,也就是具有统一数据类型的列表我们赋值的时候只能是给它赋上同样类型的数据。

         e.g.
         q)L1:1 2 3
         q)L1[2]:42
         q)L1
         1 2 42
         q)L1[2]:`other       / 只能是int类型的数据
         'type


      我们也可以通过现有的列表来创建新的列表。

         e.g.
         q)L1:(1;2;100 200)
         q)L2:(1 2 3;`ab`c)
         q)L3:(L1;L2)
         q)L3
         (1;2;100 200)
         (1 2 3;`ab`c)

 

     关于列表的内容就先写到这里,将它定为初级篇,因为以上的内容只要是使用过数组的朋友都还是比较容易理解和应用的,接下来会有一篇文章继续对List做更深入的讲解。敬请期待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库图书管理建表与修改表

根据调研选定实体及相应属性画出E-R图 ​ 2、将E-R模型转换为对应关系模型,并指出主码和外码 图书book(书号,类别,出版社,作者,书名,定价,备注); 读者reade…

如何指南:Apache Drill入门

Apache Drill是一种引擎,可以连接到许多不同的数据源,并为它们提供SQL接口。 它不仅是想跳入任何复杂事物的SQL接口,而且是一个功能强大的接口, 其中包括对许多内置函数和窗口函数的支持。 尽管它可以连接到您仍然可以使用SQL查询…

python3编程入门_在类Unix系统上开始Python3编程入门

>>> s Hello >>> x len(s) >>> print("The length of %s is %d" % (s,x)) The length of Hello is 5 看看《Python基础编程》中对格式化输出的总结: (1). %字符:标记转换说明符的开始 (2). 转换标志:-…

visual studio 调试时提示 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

问题描述 “Win32Project3.exe”(Win32): 已加载“D:\software\VS2013\VS2013 文档\Win32Project3\Debug\Win32Project3.exe”。已加载符号。 “Win32Project3.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Win32Project3.exe”(Wi…

matlab的一个疑问?

把逻辑值放入一个已知矩阵,为啥结果是:真就取矩阵的值,假就不取值? K>> aaaarandi(10,10,2) aaaa 6 3 10 4 6 7 5 2 6 3 8 2 1 2 9 4 2 9 5 5 K>> aaaa9 ans 102 logical array 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 …

如何使用log4j记录日志

【1】从零开始 a). 新建Java Project>>新建package>>新建java类; b). import jar包(一个就够),这里我用的是log4j-1.2.14.jar, c). 新建log4j.properties,置于project根目录下; log…

python验证码 识别代码不准_谈谈Python进行验证码识别的一些想法

用python加“验证码”为关键词在baidu里搜一下,可以找到很多关于验证码识别的文章。我大体看了一下,主要方法有几类:一类是通过对图片进行处理,然后利用字库特征匹配的方法,一类是图片处理后建立字符对应字典&#xff…

matlab 安装jdbc.jar

加到matlab的启动项下面。 方法如下:找到matlab的安装路径,如下: 有一个classpath的txt文件,打开,在末尾添加jdbc的jar包路径即可,如下: 或者,直接在matlab 上用以下命令&#xff0…

MyEclipse软件中快捷键

在调试程序的时候,我们经常需要注释一些代码,在用Myeclipse编程时,就可以用 Ctrl/ 为选中的一段代码加上以 // 打头的注释;当需要恢复代码功能的时候,又可以用Ctrl/ 去掉注释。这样的快捷键确实让我们编程变得容易多了…

python3:(unicode error) 'utf-8' codec can't decode

操作系统:win7 旗舰版 语言:python3.4 文本编辑器:vim、notepad 报错:SyntaxError: (unicode error) utf-8 codec cant decode byte 0xb4 in position 0:invalid start byte 基本知识:在python中默认的编码格式是 utf-…

传统的Web应用程序和RESTful API

如今,当我们构建Web应用程序时,将所有功能公开为RESTful API,然后自己使用它是一种最佳实践。 这通常与使用繁重的javascript的丰富前端配合使用,例如Angular / Ember / Backbone / React。 但是沉重的前端似乎不是一个很好的默认…

c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

在本人的《C语言可变参数函数的实现方法》一文中,介绍了如何建立自己的可变参数函数。下面继续介绍可变参数函数的实现原理。在汇编语言程序设计中,详细介绍了子程序的实现思想:(1)子程序只是一段代码的起始地址;(2)调用子程序之前…

Log4j使用详解(log4j.XML格式)——整理

log4j.xml配置详解(原文地址) 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html xml格式的log4j配置文件概述 xml格式的log4j配置文件需要使用org.apache…

SAS

options nosource; * 抑制SAS语句日志;options nosource2; * 抑制宏到日志文件的打印;options notes; * 抑制所有消息记录;你也可以三个一起用,如下:options nosource nosource2 notes; 下面的是连错误都不打印 option nonotes nomprint nosource nos…

[Swift]LeetCode39. 组合总和 | Combination Sum

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

eclipse 重构_Eclipse对类固醇的重构

eclipse 重构在上一篇有关常见Java违规的文章中 ,我列出了Java开发人员容易犯的一系列错误。 在重构Java项目以解决这些违规问题的同时,我广泛使用Eclipse的重构功能来快速更改代码。 下面是这种重构技术的汇编。 1.在块级语句周围添加花括号 用{curly …

python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

在Python中可以存储很大的值,如下面的Python示例程序:x 10000000000000000000000000000000000000000000;x x 1print (x)输出:10000000000000000000000000000000000000000001在Python中,整数的值不受位数的限制,可以…

SAS宏保存以便快速调用的三种解决方案(转载)

1.方式一:%include %include "full_path\sortds.txt"; inserts any code in the file called sortds.txt into your program at the location of the %include statement. Using this method, the macro must be recompiled every time a %INCLUDE is exe…

log4j.properties log4j.xml 路径问题

自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加…

webpack4+react多页面架构

webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入口,但也有许多业务需要多个页面不同的入口,比如不同的h5活动&am…