python中xyz从小到大和_Python基础(4)——字符串、列表、元组、字典

一、字符串 String:

•双引号或者单引号中的数据,就是字符串

*切片的语法:[起始:结束:步长]:

起始与结束值分别为半开半闭区间,如下在sublime的IPython下运行:

>>> name = 'abcdefg'

>>> name[0] #以下标访问字符串中的元素

'a'

>>> len(name) #len()函数求出字符串长度

7

>>> name[0:len(name)-1]

'abcdef'

>>> name[0:len(name)] #对比发现范围为半开半闭

'abcdefg'

关于步长:

>>> name[1:4:2] #步长为跨越的字符个数 从1开始到3结束 跨越两个字符输出

'bd'

>>> name[::-1] # 步长为-1表示逆向输出

'gfedcba'

字符串中的常用函数方法:

>>> str1 = 'hello world,python'

>>> str1.find('py',0,len(str1)) #find()方法用来字符串匹配,并返回第一处匹配的位置,从下标0到结尾寻找

12

>>> str1.find(' ')

5

>>> str1.find('a') #没有找到 返回-1

-1

>>> str1.index("hello",0,len(str1)) #index()方法类似于find()但是匹配失败会返回异常

0

>>> str1.index("Hello",0,len(str1))

Traceback (most recent call last):

File "", line 1, in ValueError: substring not found

>>> str1.count("h",0,len(str1)) #count()方法表示统计目标字符出现次数 后面两个参数分别表示起始与结束位置

2

>>> str1.replace("h","r",str1.count("h")) #replace()方法表示将h替换为r,并且替换h出现的次数

'rello world,pytron'

>>> str1.split(" ") #字符串分割方法

['hello', 'world,python']

>>> str1.split(",",2) #2表示分割次数

['hello world', 'python']

>>> str1 = "hello world Python"

>>> str1.startswith("h") #判断是否以h开头

True

>>> str1.startswith("w",5) #判断str1[5]是否为w

False

>>> str1.startswith("w",6) #判断str1[6]是否为w

True

>>> str.endswith("n") #类似于startswith()

True

>>> str.endswith("j")

False

>>> str1.strip("h") #strip() 方法用于移除字符串头尾指定的字符(默认为空格)

'ello world Python'

>>> str1.capitalize() #首字母大写

'Hello world python'

>>> str.rjust(30,"0") #rjust() 返回一个原字符串右对齐,并使用空格填充至长度 30 的新字符串。如果指定的长度小于 #字符串的长度则返回原字符串。

'000000000000Hello world python'

>>> str.ljust(30,"0") #类似于rjust()

'Hello world python000000000000'

>>> str.center(30," ") #以30的宽度居中显示,并填充空格

' Hello world python '

>>> str.center(30,"-")

'------Hello world python------'

index()与rindex()的区别:相对称的关系,和KMP算法有点相似

>>> s = "love Python,dislike Python"

>>> s.index("Python") #返回左边第一个子串'python'的下标

5

>>> s.rindex("Python") #返回右边第一个子串'python'的下标

20

列举一道字符串分割题目:

返回使用空格或者'\t'分割后的倒数第二个子串  str = "haha nihao a  \t height \t woshi nide \t hao \npengyou"

有些迷惑人的题目,据说是面试题,分析题意后大概理解应该用字符串分割方法来解决,但是里面包含了制表符,空格,换行,怎样进行分割?可以回归分割方法的原始定义:

split()方法语法:

str.split(str="", num=string.count(str)).

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

num -- 分割次数。

看出当split()不加参数时,默认对空格,换行,制表符进行分割

因此应该用不带参数的分割方法

str = "haha nihao a \t height \t woshi nide \t hao \npengyou"

str1 = str.split()

print(str1[-2])

结果为  'hao'

二、列表 List:

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

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

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

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

列表的数据项不需要具有相同的类型

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

>>> names = ['liubei','guanyu','zhangfei',3]

>>> names[0]

'liubei'

>>> names[len(names)-1]

3

>>> names[len(names)-2]

'zhangfei'

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

列表相关操作:

•in(存在),如果存在那么结果为true,否则为false

•not in(不存在),如果不存在那么结果为true,否则false

#-*-coding:utf-8-*-

#列表添加元素操作

names = ['liubei','guanyu','zhangfei',3]

for x in names: #利用for遍历列表

print(x)

i = 0

while i < len(names): #利用while遍历列表

print(names[i])

i += 1

str = ["wangbo","dxnaicnl","cnewiu"]

names.extend(str) #整个添加进去

names.insert(4,"xnsac") #下标添加 位置4添加“xnsac”

for x in names:

print(x)

#-*-coding:utf-8-*-

#定义变量A,默认有3个元素

A = ["xiaoWang","xiaoZhang","xiaoHua"]

print("------添加之前,列表A的元素------")

for tempName in A:

print(tempName)

print("\n")

#提示并添加元素

A[1] = "xiaoLu" #修改元素

temp = raw_input("请输入要添加的学生姓名:") #Python 2.7 下raw_input

A.append(temp) #单个元素添加到末尾

print("\n")

#添加完成后,遍历输出添加后的列表

print("------添加之后列表A的元素-------")

for tempName in A:

print(tempName)

print("\n")

#待查找的列表

#A = ["xiaoWang","xiaoZhang","xiaoHua"]

#获取用户要查找的元素

findName = raw_input("请输入需要查找的名字:")

#进行遍历查找

if findName in A:

print("他在列表中!")

elif findName not in A:

print("他不在列表中!")

#获取用户要删除的元素

delName = raw_input("请输入要删除的人:")

#进行删除操作

A.remove(delName)

#遍历输出

print("-------删除后列表A的元素-------")

for tempName in A:

print(tempName)

print("\n")

del A[0] #删除第一个元素

for tempName in A:

print(tempName)

print("\n")

A.pop() # 删除末尾元素 并返回末尾元素

for tempName in A:

print(tempName)

print("\n")

对列表元素进行排序:

>>> a = [3,6,4,2,14]

>>> a.sort() # 表示从小到大

>>> a

[2, 3, 4, 6, 14]

>>> a.sort(reverse = True) #表示从大到小

>>> a

[14, 6, 4, 3, 2]

>>> a = ["a","b","f","d"]

>>> a.sort() # 对字符串列表进行排序

>>> a

['a', 'b', 'd', 'f']

三、元组 Tup

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

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

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

如下实例:

tup1 = ('physics', 'chemistry', 1997, 2000);

tup2 = (1, 2, 3, 4, 5 );

tup3 = "a", "b", "c", "d";

创建空元组

tup1 = ();

元组中只包含一个元素时,需要在元素后面添加逗号:

tup1 = (50,);

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

例如:

>>> a = ('a', 'b', 'c', 'a', 'b')

>>> a.count("b") #输出b的个数 count方法

2

a = ('a', 'b', 'c', 'a', 'b')

a.index('a', 1, 3)

输出会报错,无法在1到2区间内找到'a'

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合:(元组建可以用+、*进行运算)

# -*- coding: UTF-8 -*-

tup1 = (12, 34.56);

tup2 = ('abc', 'xyz');

# 以下修改元组元素操作是非法的。

# tup1[0] = 100;

# 创建一个新的元组

tup3 = tup1 + tup2;

print tup3;

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = ('physics', 'chemistry', 1997, 2000);

print tup;

del tup;

print "After deleting tup : "

print tup;

四、字典 Dictionary

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

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

d = {key1 : value1, key2 : value2 }

示例代码如下:

>>> info = {name:zhangsan,age:18}

>>> info["name"]

'zhangsan'

>>> info["school"] = "hpu"

>>> info

{'age': 18, 'name': 'zhangsan', 'school': 'hpu'}

>>> del info['name']

>>> info

{'age': 18, 'school': 'hpu'}

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

age = info.get('age')

>>> age = info.get("age") #并不知道是否有age

>>> print(age)

None #age是none

>>> age = info.get("age",18)

>>> age #为age设置默认值

18

相关字典操作如下:

info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}

# print('id为:%d'%info['id'])#程序会终止运行,因为访问了不存在的键

newId = input('请输入新的学号:')

info['id'] = int(newId)

print('添加之后的id为:%d'%info['id'])

#如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素

# del info

# print(info)

info.clear() #清空字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值