01 字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。

创建字符串很简单,只要为变量分配一个值即可。例如:

value1 = 'hello'
value2 = "Python"

Python不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。

Python访问子字符串,可以使用方括号来截取字符串,如下实例:

value1 = 'hello'
value2 = "Python"
print(value1[0])
print(value2[1:4])

下面我们就来介绍一些方法,来更好的了解字符串。

string = "hello python"

# 把字符串的第一个字符大写
print(string.capitalize())
# 返回子串在string中出现的次数。
# 如果指定beg或end 则在返回指定范围内str出现的次数
print(string.count('o'))
# 判断字符串是否以str结束,
# 如果指定beg或者end则判断指定范围内是否以str结束。
print(string.endswith('on'))
# 判断str是否包含在string之中,如果包含则返回开始位置的索引值,否则返回-1
print(string.find('py'))
print(string.find('wow'))
# 格式化字符串
print(string.format())
# 跟find方法类似,但如果str不在string中会报一个异常
# print(string.index('wow'))
# 以string作为分隔符,将seq中所有元素合并成为一个新的字符串
# print(string.join(seq))
# 将string中的str1,替换成为str2,如果指定num,则替换不超过num次
print(string.replace('ello','i'))
# 以str为分隔符切片string。如果指定num,则仅分隔num+个子字符串
print(string.split(" "))
# 去除string首尾两边的空白符号
print(string.strip())

注意:以上返回的都是原字符串的拷贝。

02 列表—List

列表是Python中最基础的数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

列表可以进行的操作包括索引,切片,加,乘,检查成员。

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['a','b','c','d']
list2 = [1,2,3,4,5,6,7,8,9]
对列表的一些基础操作:
list1 = ['a','b','c','d']
list2 = [1,2,3,4,5,6,7,8,9]
# 访问列表的值
print(list1[0])
print(str(list2[1:5]))
# 列表中追加值
list1.append('Chrome')
print(list1)
list2.append(10)
print(list2)
# 删除列表元素
del list2[5]
print(list2)
list1.remove('Chrome')
print(list1)
# 反向列表中的元素
list1.reverse()
print(list1)
# 对列表进行排序
list2.sort()
print(list2)

03 元组—tuple

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
对元组的一些基础操作:
# 修改元组
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

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

# 创建一个新的元组
tup3 = tup1 + tup2
print tup3

# 删除元组 元组中的元素值是不允许删除的,但是可以使用 del 删除整个元组。
tup = ('physics', 'chemistry', 1997, 2000)
del tup
print tup

04 集合

Python中的集合跟数学上的集合是一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算。

set1 = {1, 2, 3, 3, 3, 2}
print(set1)
print('Length =', len(set1))
set2 = set(range(1, 10))
print(set2)
set1.add(4)
set1.add(5)
set2.update([11, 12])
print(set1)
print(set2)
set2.discard(5)
# remove的元素如果不存在会引发KeyError
if 4 in set2:
	set2.remove(4)
print(set2)
# 遍历集合容器
for elem in set2:
	print(elem ** 2, end=' ')
print()
# 将元组转换成集合
set3 = set((1, 2, 3, 3, 2, 1))
print(set3.pop())
print(set3)
# 集合的交集、并集、差集、对称差运算
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# 判断子集和超集
print(set2 <= set1)
# print(set2.issubset(set1))
print(set3 <= set1)
# print(set3.issubset(set1))
print(set1 >= set2)
# print(set1.issuperset(set2))
print(set1 >= set3)
# print(set1.issuperset(set3))

05 字典-dictionary

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

下面的代码演示了如何定义和使用字典。

scores = {'小白': 95, '白元芳': 78, '狄仁杰': 82}
# 通过键可以获取字典中对应的值
print(scores['小白'])
print(scores['狄仁杰'])
# 对字典进行遍历(遍历的其实是键再通过键取对应的值)
for elem in scores:
	print('%s\t--->\t%d' % (elem, scores[elem]))
# 更新字典中的元素
scores['白元芳'] = 65
scores['诸葛王朗'] = 71
scores.update(冷面=67, 方启鹤=85)
print(scores)
if '武则天' in scores:
	print(scores['武则天'])
	print(scores.get('武则天'))
# get方法也是通过键获取对应的值但是可以设置默认值
print(scores.get('武则天', 60))
# 删除字典中的元素
print(scores.popitem())
print(scores.popitem())
print(scores.pop('小白', 100))
# 清空字典
scores.clear()
print(scores)

06 每日小测

1、有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,有个人想了个办法就是:

大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他后面的人接着从1开始报数,报到9的人继续扔到海里面,直到扔掉15个人。由于上帝的保佑,15个基督徒都幸免于难。

问这些人最开始是怎么站的,哪些位置是基督徒哪些位置是非基督徒。

08-12 17:02