继续小结python基本语法。
关于列表、元组、字典和字符串。
首先这几种数据都是一串数据,如列表[1,2,3]、元组(1,2,3)、字典{“name”:”zhangsan”,…},字符串就不用再说了,在js中列表即数组,字典即json,没有元组这种数据。
先小结这几种数据在py中共同的地方:假设创建列表、元组、字典、字符串变量list、tuple、dict和str。
1、都可以用变量名[索引]取值,如str[i]; 2、用len(变量名)返回元素数量; 3、用del(变量名)删除变量,其中列表支持del(lsit[i])、字典支持del(dict[key])删除列表和字典的元素项,元组和字符串不支持用del删除元素项; 4、用for in遍历; 5、max()\min()返回最大最小值; 6、+运算,列表、元组、字符串支持用+拼接,字典不支持; 7、*运算拼接,列表、元组、字符串支持,字典不支持; 8、修改元素项值,列表和字典支持list[i]=newvalue和dict[key]=value修改已有元素值,元组和字符串不支持; 9、添加新元素,仅字典支持dict[key]=value添加新元素; 10、切片,即取部分元素,格式:变量名[start:end:step],字典不能切片。 还有一些细节,索引号从0开始,切片时可取负值(从右开始,起始值-1),列表、元组、字符串的索引不能越界(即不能用不存在的索引号)。
下面分开小结:
列表、元组、字典、字符串的方法都可以用 变量名.+tab查看。
列表:如list[1,2,3],js中列表叫数组,js中索引是可以越界的,数组长度有数组属性length可以直接返回,可以用list[i]=value来添加或修改元素,切片在js中有专门的slice方法。
在py中,列表的方法大概有11个,用.tab可查看, list.append(新元素) 末尾追加元素、 list.insert(i,value) 指定索引位置插入元素、 list.extend(list2) 两个列表合并、 list.pop(i) 弹出索引号处的元素、 list.remove(value) 清除指定值(一次一个)、 list.clear() 清除列表、 list.sort() 排序、 list.reverse() 反转排序、 list.index(value) 查找返回索引、 list.copy() 非关联复制列表。 这些方法除了查询和统计,都是直接修改列表的,即不改变引用关系,注意多变量引用时,大家都在变化!感觉js的数组方法更多,更灵活!
元组tuple,这种对象比较特别,用小括号,如(1,2,3),元素不能修改(不包括赋值),该对象仅提供了两种2个方法count和index。
字典dict,如{key:value,…},js中为json,是一种很重要的数据类型,描述对象特别方便,采用无序键值对,如{“name”:”xm”,…”},其中key不能重复,内部采用hash算法。
字符串str,如str=“123456789”,py中,字符串提供的方法太多了,功能分得非常细,判断字符类型的就有7、8个,应该所有的字符串方法都不能修改原字符串(赋值修改除外),方法太多不列举了。字符串里的转义字符跟js一样。还有一个关于格式化字符串输出,在py中比较特别,js中用正则表达式格式化字符串,py有没有正则,目前还不清楚!py的格式化字符串输出要用%,数字%d、小数%f、字符%s、十六进制数%x用来引入变量,比如输出数字变量a,print(“输出变量a的值:%d” % a),感觉很不习惯,js直接用+,如console.log(“输出变量a的值:”+a),需要格式化另说。
好了,列表、元组、字典、字符串小结到此,还有一点不清楚,这些数据作为对象的话,目前看到的资料,没有提及它们的属性,如js的数组吧,有length等属性,py的这些对象没有属性可用吗? |