数据类型
python数据类型包括数值、字符串、列表、元组和字典。
数值
数值类型包括整型、长整型、浮点型和复数型。1
2
3
4整型 2
长整型 100L
浮点型 0.0, 12.0, -18.8, 3e+7
复数型(complex) -3.14j, 8.32e-36j
字符串
字符串有3种定义方式1
2
3str = 'this is a string'
str = "this is a string"
str = '''this is a string'''
此处的3引号可以是3个单引号,也可以是3个双引号,但不可混用。
字符串是序列的一种,可以通过切片的方式操作。1
2
3
4
5
6
7
8
9a = 'abcde'
a[0] = a
a[-1] = e
a[:] = abcde
a[:-1] = abcd
a[::1] = abcde
a[::2] = ace
a[-4:-2] = bc
a[-2:-4:-1] = dc 从右向左取
序列
字符串、元组和列表都是序列。
序列的特点
- 索引操作符
可以从序列中抓取一个特定的项目。 - 切片操作符
能够获取序列的一个切片,即一部分序列。序列的基本操作
len()
序列的长度1
2
3In [1]: a = 'abcde'
In [2]: len(a)
Out[2]: 5
+
连接2个字符1
2
3In [3]: a = 'abcde'
In [4]: a + 'f'
Out[4]: 'abcdef'
*
重复序列元素1
2In [9]: '#' * 10
Out[9]: '##########'
in
判断元素是否在序列中1
2
3
4
5
6
7In [10]: a = 'abcde'
In [11]: 'a' in a
Out[11]: True
In [12]: 'f' in a
Out[12]: False
In [13]: 'f' not in a
Out[13]: True
max()
返回最大值1
2
3
4In [14]: a
Out[14]: 'abcde'
In [15]: max(a)
Out[15]: 'e'
min()
返回最小值1
2
3
4In [16]: a
Out[16]: 'abcde'
In [17]: min(a)
Out[17]: 'a'
cmp(x,y)
比较2个序列是否相等1
2
3
4
5
6
7
8
9
10
11
12
13
14In [4]: a
Out[4]: 'abcde'
In [5]: cmp(a,'ac')
Out[5]: -1
In [6]: cmp(a,'abcde')
Out[6]: 0
In [7]: cmp(a,'abcdef')
Out[7]: -1
In [8]: cmp(a,'ab')
Out[8]: 1
元组
元组和字符串一样是不可变的;元组可以存储一系列的值;元组通常用在用户定义的函数能够安全的采用一组值的时候,即被使用的元组的值不会改变。
定义
使用括号()
1
2
3
4
5
6
7In [9]: t = ('a',1,(1,))
In [10]: t
Out[10]: ('a', 1, (1,))
In [11]: t[0]
Out[11]: 'a'
元祖操作
见序列
元组的拆分
元组可用于接受函数的返回值。1
2
3
4
5
6
7
8
9
10
11
12
13In [14]: t
Out[14]: ('abcde', 'b', 'c')
In [15]: first,second,third = t
In [16]: first
Out[16]: 'abcde'
In [17]: second
Out[17]: 'b'
In [18]: third
Out[18]: 'c'
列表
列表定义
列表使用[]
定义。
列表是处理一组有序项目的数据结构;可以在列表中存储一个序列的项目;列表是可变的数据类型。
创建列表
1 | In [1]: list1 = [] |
列表的操作
- 取值
切片和索引的方式,和字符串的一致。 添加
list.append()1
2
3
4
5
6
7In [17]: list2
Out[17]: []
In [18]: list2.append('linux')
In [19]: list2
Out[19]: ['linux']删除
del list[]1
2
3
4
5
6
7In [24]: list3
Out[24]: ['b', 1, (2,), ['hello', 'python']]
In [25]: del list3[-1]
In [26]: list3
Out[26]: ['b', 1, (2,)]
list.remove(list[])1
2
3
4
5
6
7In [27]: list3
Out[27]: ['b', 1, (2,)]
In [28]: list3.remove(1)
In [29]: list3
Out[29]: ['b', (2,)]
- 修改
list[] = x - 查找
var in list
当然,字符串、元组和列表还有一些其他的内置方法,可以通在pycharm中通过定义一个对象,通过对象.
方法查看了解。
实例
练习1
将 “123” 转换成整数。
1
2
3
4In [1]: a = int("123")
In [2]: print a
123将 “9999999999999999999” 转换成长整数。
1
2In [5]: type(b)
Out[5]: long将 “3.1415926” 转换成一个浮点数。
1
2
3
4
5
6
7In [6]: c = float("3.1415926")
In [7]: print c
3.1415926
In [8]: type(c)
Out[8]: float将 123 转换成一个字符串。
1
2
3
4
5
6
7In [9]: d = str(123)
In [10]: print d
123
In [11]: type(d)
Out[11]: str现有以下字符串
字符串1:” abc deFGh&ijkl opq mnrst((uvwxyz “
字符串2:” ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(&YZ “
使用字符串的各种方法转换成如下方式
ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16In [12]: str1=" abc deFGh&*ijkl opq mnrst((uvwxyz "
In [13]: str2=" ABC#DEF GH%IJ MNOPQ KLRS&&TUVWX(*&YZ "
In [14]: str11="".join((filter(lambda x: x.isalpha(), str1))).upper()
In [15]: str21="".join((filter(lambda x: x.isalpha(), str2))).lower()
In [16]: print str11
ABCDEFGHIJKLOPQMNRSTUVWXYZ
In [17]: print str21
abcdefghijmnopqklrstuvwxyz
In [23]: print str11+str21[::-1]
ABCDEFGHIJKLOPQMNRSTUVWXYZzyxwvutsrlkqponmjihgfedcba
练习2
- 现有列表
list1 = [‘XXXX’, ‘b’, 3, ‘c’, ‘&’, ‘a’, 3, ‘3’, 3, ‘aa’, ‘3’, ‘XXXX’]
list2 = [‘e’, ‘f’, ‘g’]
要求对其做以下操作:
- 取出 ‘XXXX’ 中间的部分,形成一个新的列表list3。
- 对list3 做一下几部操作
1)删除特殊符号。
2)统计 3 在list3中出现的次数。
3)用最简短的代码去除list3中 26个字母以外的元素(要求只能对list3操作)。
4)对list3排序。
5)在末尾追加’d’,并把list2追加到list3。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36In [1]: list1 = ['XXXX', 'b', 3, 'c', '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX']
In [2]: list2 = ['e', 'f', 'g']
In [3]: list3 = list1[1:-1]
In [4]: print list3
['b', 3, 'c', '&', 'a', 3, '3', 3, 'aa', '3']
In [5]: list3.remove('&')
In [6]: print list3
['b', 3, 'c', 'a', 3, '3', 3, 'aa', '3']
In [7]: print list3.count(3)
3
In [9]: list3=[i for i in list3 if str(i).isalpha()]
In [10]: print list3
['b', 'c', 'a', 'aa']
In [12]: list3.sort()
In [13]: print list3
['a', 'aa', 'b', 'c']
In [14]: list3.append('d')
In [15]: print list3
['a', 'aa', 'b', 'c', 'd']
In [16]: list3.extend(list2)
In [17]: print list3
['a', 'aa', 'b', 'c', 'd', 'e', 'f', 'g']
练习3
- 现有两个变量
a = (‘h’,)
b = (‘h’)
1)将a和b分别追加到上一题的list3中,观察有什么区别。
2)将1生成的list3转换成元组(扩展:自己搜索方法)。
3)打印出只有一个元素’h’的元组,在2中生成的元组中的索引。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21In [2]: a=('h',)
In [3]: b=('h')
In [4]: list3.append(a)
In [5]: print list3
['a', 'aa', 'b', 'c', 'd', 'e', 'f', 'g', ('h',)]
In [6]: list3.append(b)
In [7]: print list3
['a', 'aa', 'b', 'c', 'd', 'e', 'f', 'g', ('h',), 'h']
##区别在于a是元组,b是字符串
In [25]: t3=tuple(list3)
In [26]: print t3
('a', 'aa', 'b', 'c', 'd', 'e', 'f', 'g', ('h',), 'h')
In [28]: t3.index(a)
Out[28]: 8