# 字符串
# 字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
# 创建字符串很简单,只要为变量分配一个值即可。
var1 = 'Hello World!'
var2 = "Python Runoob"
# Python 访问字符串中的值
# Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
# Python 访问子字符串,可以使用方括号来截取字符串,如下实例:
var1 = 'Hello World!'
var2 = "Python Runoob"
print("var1[0]: ", var1[0])
print("var2[1:5]: ", var2[1:5])
# Python 字符串连接
# 我们可以对字符串进行截取并与其他字符串进行连接,如下实例:
var1 = 'Hello World!'
print("输出 :- ", var1[:6] + 'Runoob!')
# Python 转义字符
# 在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下:
# 转义字符 描述
# \(在行尾时) 续行符
# \\ 反斜杠符号
# \' 单引号
# \" 双引号
# \a 响铃
# \b 退格(Backspace)
# \e 转义
# \000 空
# \n 换行
# \v 纵向制表符
# \t 横向制表符
# \r 回车
# \f 换页
# \oyy 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
# \xyy 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行
# \other 其它的字符以普通格式输出
# Python字符串运算符
# 下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
# 操作符 描述
# + 字符串连接
# * 重复输出字符串
# [] 通过索引获取字符串中字符
# [ : ] 截取字符串中的一部分
# in 成员运算符 - 如果字符串中包含给定的字符返回 True
# not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
# r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
a = "Hello"
b = "Python"
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
if ("H" in a):
print("H 在变量 a 中")
else:
print("H 不在变量 a 中")
if ("M" not in a):
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
# 几个常用的字符串函数
# string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
# string.endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
# string.format() 格式化字符串
# string.isnumeric() 如果 string 中只包含数字字符,则返回 True,否则返回 False
# max(str) 返回字符串 str 中最大的字母。
# min(str) 返回字符串 str 中最小的字母。
# string.split(str="", num=string.count(str)) 以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串
# 列表
# 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
# Python有6个序列的内置类型,但最常见的是列表和元组。
# 序列都可以进行的操作包括索引,切片,加,乘,检查成员。
# 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
# 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
# 列表的数据项不需要具有相同的类型
# 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
from filecmp import cmp
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
# 与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
# 访问列表中的值
# 使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]
print("list1[0]: ", list1[0])
print("list2[1:5]: ", list2[1:5])
# 更新列表
# 你可以对列表的数据项进行修改或更新,你也可以使用append()
# 方法来添加列表项,如下所示:
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素
list.append('Runoob')
print(list)
# 删除列表元素
# 可以使用 del 语句来删除列表的元素,如下实例:
list1 = ['physics', 'chemistry', 1997, 2000]
print(list1)
del list1[2]
print("After deleting value at index 2 : ")
print(list1)
# Python列表脚本操作符
# 列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
# 如下所示:
# Python 表达式 结果 描述
# len([1, 2, 3]) 3 长度
# [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
# ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
# 3 in [1, 2, 3] True 元素是否存在于列表中
# for x in [1, 2, 3]: print x, 1 2 3 迭代
# Python列表函数&方法
# Python包含以下函数:
# 1 cmp(list1, list2) 比较两个列表的元素 list1 -- 比较的列表。 list2 -- 比较的列表。
# 注意: python3函数已经把该函数舍弃
# 2 len(list) 列表元素个数
ist1, list2 = [123, 'xyz', 'zara'], [456, 'abc']
print("First list length : ", len(list1))
print("Second list length : ", len(list2))
# 3 max(list) 返回列表元素最大值 (数字是"最小的")
list1, list2 = ['123', 'xyz', 'zara', '143433'], [456, 700, 200]
print("Max value element : ", max(list1))
print("Max value element : ", max(list2))
# 4 min(list) 返回列表元素最小值
print("min value element : ", min(list1))
print("min value element : ", min(list2))
# Python包含以下方法:
# 1 list.append(obj) 在列表末尾添加新的对象 该方法无返回值,但是会修改原来的列表。
aList = [123, 'xyz', 'zara', 'abc']
aList.append(2009)
print("Updated List : ", aList)
# 2 list.count(obj) 统计某个元素在列表中出现的次数
print("Count for 123 : ", aList.count(123))
# 3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 该方法没有返回值,但会在已存在的列表中添加新的列表内容。
bList = [2009, 'manni']
aList.extend(bList)
print("Extended List : ", aList)
# 4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
# index()方法语法:list.index(x[, start[, end]])
# 参数
# x-- 查找的对象。
# start-- 可选,查找的起始位置。
# end-- 可选,查找的结束位置。
# 返回值 该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
aList = [123, 'xyz', 'runoob', 'abc']
print("xyz 索引位置: ", aList.index('xyz'))
print("runoob 索引位置 : ", aList.index('runoob', 1, 3))
# 5 list.insert(index, obj) 将对象插入列表,该方法没有返回值,但会在列表指定位置插入对象。
aList.insert(2, 2029)
print("Final List : ", aList)
# 6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
# 参数 obj -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
# 返回值 该方法返回从列表中移除的元素对象。
list_pop = list1.pop(2)
print("删除的项为 :", list_pop)
print("列表现在为 : ", list1)
# 7 list.remove(obj) 移除列表中某个值的第一个匹配项
# 该方法没有返回值但是会移除列表中的某个值的第一个匹配项。
aList.remove('xyz')
print("List : ", aList)
# 8 list.reverse() 反向列表中元素 该方法没有返回值,但是会对列表的元素进行反向排序。
aList.reverse()
print(aList)
# 9 list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
# cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
# key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
# reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
# 该方法没有返回值,但是会对列表的对象进行排序。
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
# 降序
vowels.sort(reverse=True)
# 输出结果
print('降序输出:')
print(vowels)