python之路--第二天:基本数据类型即其方法介绍

计算机进制的故事

 

 

基本数据类型:字符串str   整型数字int   集合set   列表list  元组tuple  字典dict

###########str 字符串############

字符串默认是不可改变的,所以对字符串的修改,会重新生成一个新的字符串,原来的字符串不会改变。

快速查看字符串的方法

name = "tony"

>>>dir(name)  会列出name这个字符串的所有方法

>>>help(name.split)  查看name这个字符串的split方法

字符串str相当于一个类,其中的方法相当于一个实例化的对象

name = "alex"   str类的对象

1、name.capitalize()  首字母变大写,同时,如果字符串后面有大写字母,也会将大写转为小写,字符串默认是不可改变的,会生成一个新的值。

1 >>> name = "alex"
2 >>> name1 = name.capitalize()
3 >>> name1
4 'Alex'
5 >>> name = "aleX"
6 >>> name1=name.capitalize()
7 >>> name1
8 'Alex'
View Code

2、name.casefold() 将大写字母转为小写,可以转换多种语言。

1 >>> name="LIFuqianG"
2 >>> name1 = name.casefold()
3 >>> name1
4 'lifuqiang'
View Code

3、name.count("a")  统计字符串中a重复出现的次数

1 >>> name="alexalexalex"
2 >>> name.count("a")
3 3
View Code

4、name.format() 格式化输出

 1 >>> name="我叫{0},我今年{1}岁"
 2 >>> v = name.format("李富强","25")
 3 >>> print
 4 >>> print(v)
 5 我叫李富强,我今年25岁
 6 >>> name = "我叫{name},我今年{age}岁"
 7 >>> v=name.format(name="李富强",age="25")
 8 >>> print(v)
 9 我叫李富强,我今年25岁
10 >>> 
View Code

5、name.startswith("a") 判断字符串是否以a开头,如果是,返回True,否则,返回false

1 >>> name = "Lifuqiang"
2 >>> name.startswith("L")
3 True
4 >>> name.startswith("l")
5 False
View Code

6、name.endswith("a") 判断字符串是否以a结尾,如果是,返回True,否则,返回false,同startswith方法,这里不再演示。

7、name.split("x")  将字符串以x为分隔符分割进行分割,生成一个不包含x的列表 

1 >>> name = "wo shi yi ge bin"
2 >>> v = name.split()
3 >>> print(v)
4 ['wo', 'shi', 'yi', 'ge', 'bin']
5 >>> name = "lifuqiang"
6 >>> v = name.split("q")
7 >>> print(v)
8 ['lifu', 'iang']
View Code

8、name.find("l")  查找l在字符串中的索引,如果字符存在于字符串中,则返回字符的索引,不存在,则返回-1

9、name.index("l")  查找l的索引,如果存在,则返回索引值,如果不存在,报错

 1 >>> name.find("b")
 2 -1
 3 >>> name.find("q")
 4 4
 5 >>> name.index("a")
 6 6
 7 >>> name.index("b")
 8 Traceback (most recent call last):
 9   File "<pyshell#69>", line 1, in <module>
10     name.index("b")
11 ValueError: substring not found
View Code

10、name.replace("a","AA")  将字符串中的a替换为AA

1 >>> name = "你大爷的,你怎么搞得"
2 >>> name
3 '你大爷的,你怎么搞得'
4 >>> v = name.replace("你大爷的","***")
5 >>> print(v)
6 ***,你怎么搞得
View Code

11、name.lower()  将字符串中的大写字母转为小写

12、name.upper() 将字符串中的小写转为大写

1 >>> name = "LiFuQiang"
2 >>> v = name.lower()
3 >>> print(v)
4 lifuqiang
5 >>> v1 = name.upper()
6 >>> print(v1)
7 LIFUQIANG
View Code

13、name.ljust(20,"#") 一共20个字符,alex位于左侧,后面被#填充

14、name.rjust(20,"#") 一共20个字符,alex位于右侧,前面被#填充

15、name.center(20,"#") 一共20个字符,alex居中,两侧被"#"填充

16、name.zfill(20) 一共20个字符,alex前面被0填充

17、join的使用**元素拼接,循环每一个元素

1 >>> name = "lifuqiang"
2 >>> v = "_".join(name)
3 >>> print(v)
4 l_i_f_u_q_i_a_n_g
View Code

18、partition("l")  将字符串以*为分割对象进行分割,生成一个包含l元素的列表,例如

name = "zhongguo"

v = name.partition("g")

print(v)输出的结果如下:

('zhon', 'g', 'guo')

19、name.swapspace() 大小写转换,大写的变成小写,小写的变成大写。

20、name.strip() 去除字符串两边的空格,但是不包括字符串当中的空格,

21、name.lstrip()  去除左边的空格

22、name.rstrip() 去除右边的空格。

23、name.isdigit()   判断字符串是否为全部数字,如果是,返回True,否则,返回False,例如:

name = "123456"

print(type(name))

v = name.isdigit()

print(type(v))

print(v)

输出结果如下:

<class 'str'>
<class 'bool'>
 True
24、name.isalnum()  判断是否为字符,数字,或者汉字,如果是,返回True,如果不是,返回False

25、name.isalpha()  判断字符串是否全部为英文字母,是,返回True,不是,则返回False。

26、name.decimal() 判断字符串是否全部为十进制数字,是,返回True,否则,返回False。

27、expandtabs  该方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。

    expandtabs()方法语法:str.expandtabs(tabsize=8),tabsize -- 指定转换字符串中的 tab 符号('\t')转为空格的字符数。

    该方法返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。例如

    name = "Tom\tBob\tLinux"

    v = name.expandtabs(tabsize=20)

    print(v),输出结果如下

    'Tom                 Bob                 Linux',将\t转为20个空格

28、name.isupper() 判断字符串包含的字母是否全部为大写,如果是,返回True,否则,返回False,可以包含汉字及数字。

29、name.islower()  判断字符串包含的字母是否全部为小写,如果是,返回True,否则,返回False,可以包含汉字及数字。

30、name.istitle()  判断字符串是否每个词组以大写字母开头,如果是,返回True,否则,返回False。可以包含数字及汉字

31、name.rindex("x") 从后面往前面查找,打印第一个x的索引。如果查找的元素不存在,报错。

32、name.rfind("x") 从后面往前面查找,打印第一个x的索引。如果查找的元素不存在,返回-1.

这里需要强调的是,字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。任何上面的函数改变了字符串后,都会返回一个新的字符串,原字串并没有变。

33、翻译 maketrans()

该方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

注:两个字符串的长度必须相同,为一一对应的关系。

###########list 列表############

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

1、定义列表

name = ["张三丰","光明左使","鹰王","青翼蝠王"]

2、name.append("紫衫龙王"):在列表末尾添加紫衫龙王

1 >>> name.append("紫衫龙王")
2 >>> name
3 ['张三丰', '光明左使', '鹰王', '青翼蝠王', '紫衫龙王']
View Code

3、name.count("张三丰"):统计元素张三丰在列表中出现的次数

1 >>> name.count("张三丰")
2 1
View Code

4、name.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

1 >>> seq = [1,2,3]
2 >>> name.extend(seq)
3 >>> name
4 ['张三丰', '光明左使', '鹰王', '青翼蝠王', '紫衫龙王', 1, 2, 3]
View Code

5、name.index("鹰王"):从列表中找出某个值第一个匹配项的索引位置,默认显示第一个匹配项的索引。

1 >>> name.index("鹰王")
2 2
View Code

6、name.insert(2, "金毛狮王"):将对象金毛狮王插入列表索引2的位置

1 >>> name.insert(2, "金毛狮王")
2 >>> name
3 ['张三丰', '光明左使', '金毛狮王', '鹰王', '青翼蝠王', '紫衫龙王', 1, 2, 3]
View Code

7、name.pop():移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

1 >>> name
2 ['张三丰', '光明左使', '金毛狮王', '鹰王', '青翼蝠王', '紫衫龙王', 1, 2, 3]
3 >>> name.pop()
4 3
5 >>> name
6 ['张三丰', '光明左使', '金毛狮王', '鹰王', '青翼蝠王', '紫衫龙王', 1, 2]
View Code

8、name.remove("鹰王"):移除列表中鹰王的第一个匹配项

1 >>> name.remove("鹰王")
2 >>> name
3 ['张三丰', '光明左使', '金毛狮王', '青翼蝠王', '紫衫龙王', 1, 2]
View Code

9、name.reverse()&name.sort():反向列表中元素& 对原列表进行排序

 1 >>> names
 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
 3 >>> names.sort() #排序
 4 Traceback (most recent call last):
 5   File "<stdin>", line 1, in <module>
 6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
 7 >>> names[-3] = '1'
 8 >>> names[-2] = '2'
 9 >>> names[-1] = '3'
10 >>> names
11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
12 >>> names.sort()
13 >>> names
14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
15 
16 >>> names.reverse() #反转
17 >>> names
18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
View Code

11、name.copy()  拷贝name这个列表,浅拷贝

1 >>> name
2 ['光明左使', '张三丰', '紫衫龙王', '金毛狮王', '青翼蝠王']
3 >>> name1 = name.copy()
4 >>> name1
5 ['光明左使', '张三丰', '紫衫龙王', '金毛狮王', '青翼蝠王']
View Code

12、name.clear() 清空列表

1 >>> name
2 ['光明左使', '张三丰', '紫衫龙王', '金毛狮王', '青翼蝠王']
3 >>> name.clear()
4 >>> name
5 []
View Code

 

####################tuple  元组####################

元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可,元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义

1、创建元组

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

创建空元组

tup1 = ();

元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义

tup1 = (50,)

2、访问元组:

元组同列表一样可以使用下标索引来访问元组中的值,如下实例:

#!/usr/bin/python

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );

 

print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
#以上实例输出结果:
#tup1[0]:  physics
#tup2[1:5]:  [2, 3, 4, 5]

三、修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

#!/usr/bin/python

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# 以下修改元组元素操作是非法的。
# tup1[0] = 100;

# 创建一个新的元组
tup3 = tup1 + tup2;
print(tup3);
#以上实例输出结果:
#(12, 34.56, 'abc', 'xyz')

 

四、删除元素
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

name = ("bob","tom","jerry")

del  name

五、元组的运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

六、元组索引
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素.

七、元组中嵌套列表

 例如name = ("bob","tom",["zhangsan","lisi"],"lili")

 对于整个元组来说,不可更改,但是对于元组中的列表,是可以改的。

八、元组的内置函数
元组包含了以下内置函数
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组

 

####################dict  字典#############################

1. 清空  clear
dic = {'k1':'v1','k2':'v2'}
dic.clear()
print(dic)

2. 浅拷贝copy
dic = {'k1':'v1','k2':'v2'}
v = dic.copy()
print(v)

3. 根据key获取指定的value;不存在不报错,可以指定返回的值
dic = {'k1':'v1','k2':'v2'}
v = dic.get('k1111',1111) 1111即为指定的返回值
print(v)
v = dic['k1111']
print(v)

4. 删除并获取对应的value值
dic = {'k1':'v1','k2':'v2'}
v = dic.pop('k1')
print(dic)
print(v)

5. 随机删除键值对,并获取到删除的键值
dic = {'k1':'v1','k2':'v2'}
v = dic.popitem()
print(dic)
print(v)

k,v = dic.popitem() # ('k2', 'v2')
print(dic)
print(k,v)

v = dic.popitem() # ('k2', 'v2')
print(dic)
print(v[0],v[1])

6. 增加,如果存在则不做操作
dic = {'k1':'v1','k2':'v2'}
dic.setdefault('k3','v3')
print(dic)
dic.setdefault('k1','1111111')
print(dic)

7. 批量增加或修改
dic = {'k1':'v1','k2':'v2'}
dic.update({'k3':'v3','k1':'v24'})
print(dic)


dic = dict.fromkeys(['k1','k2','k3'],123)
print(dic)
dic = dict.fromkeys(['k1','k2','k3'],123)
dic['k1'] = 'asdfjasldkf'
print(dic)

dic = dict.fromkeys(['k1','k2','k3'],[1,])
{
k1: 123123213, # [1,2]
k2: 123123213, # [1,]
k3: 123123213, # [1,]
}
dic['k1'].append(222)
print(dic)
########## 额外:
- 字典可以嵌套
- 字典key: 必须是不可变类型
dic = {
'k1': 'v1',
'k2': [1,2,3,],
(1,2): 'lllll',
1: 'fffffffff',
111: 'asdf',
}
print(dic)
key:
- 不可变
- True,1
dic = {'k1':'v1'}
del dic['k1']

布尔值:
1 True
0 False
bool(1111)

########################### set  集合  ##############################

set 顾明思义,就是个集合,集合的元素是唯一的,无序的。一个{ }里面放一些元素就构成了一个集合,set里面可以是多种数据类型(但不能是列表,集合,字典,可以是元组)

1、定义集合:

>>>set1 = {1,2,3,4,5,6,2,3,4}

>>>type(set1)

<class 'set'>

>>>print(set1)

{1, 2, 3, 4, 5, 6},

可以看出,集合是没有重复的元素的。

2、set1 = {1,2,3,4,}

   set1.add(x)  将元素x加入到set1中,若元素已存在,不做任何操作

3、set1 = {1,2,3,4,}

   set1.update(x)  将集合x并入原集合s中,x还可以是列表,元组,字典等,x 可以有多个,用逗号分开。例如:

   >>>x = [12,23,34]

   >>>set1.update(x)

   >>>print(set1)

   {1, 2, 3, 4, 5, 6, 34, 12, 23}

4、set1 = {1,2,3,4,}

   set1.discart(x)  删除元素,如果元素不存在,不会引发错误,remove则不同,如果元素不存在,会报KeyError的错误

5、 set1 = {1,2,3,4,}

    set1.pop() 随机删除并返回集合s中某个值,注意,因为set是无序的,不支持下标操作,没有所谓的最后一个,pop()移除随机一个元 素并返回删除的元素值,这和其他数据结构不同

6、 set1 = {1,2,3,4,5}

    set1.clear()  清空集合。len(set1) 显示元素个数

7、set1 = {1,2,3,4,}

   x  in  set1  判断元素是否存在于集合中,如果返回True,说明存在,False,则不存在

8、set1 = {1,2,3,4,}

   set1.union(x) 返回s与集合x的交集,不改变原集合s,x 也可以是列表,元组,字典。

9、set1.intersection(x) 返回s与集合x的并集,不改变s, x 也可以是列表,元组,字典。

10、set1.difference(x) 返回在集合s中而不在集合 x 中的元素的集合,不改变集合s, x 也可以是列表,元组,字典。

11、set1.symmetric_difference( x ) 返回s和集合x的对称差集,即只在其中一个集合中出现的元素,不改变集合s, x 也可以是列表,元组,字典。

12、set1.issubset(x) 判断 集合set1 是否是集合x的子集,即set1是否被x集合包含,如果是,返回True,否则,返回False

    set1.issuperset(x) 判断集合set1是否是集合x的父集,即set1是否被包含集合x,如果是,返回True,否则,返回False

13、求交集,并集,差集,对称差集的另一种方法

s1 = {1,2,3,'a'}

s2 = {3,4,'b'}

s1 & s2  #交集  {3}

s1 | s2   #并集  {1, 'a', 3, 4, 'b', 2} 

s1 - s2  #差集   {1, 'a', 2} 

s1 ^ s2  #对称差集  {1, 2, 4, 'b', 'a'} 

{ } 在布尔运算中表示 False,其他均为 True

 

posted @ 2017-04-26 19:52  羊脂玉净瓶  阅读(104)  评论(0)    收藏  举报