python设置字符串循环_python——字符串、列表、字典、集合、文件操作,循环

a.字符串格式化输出

name = "x5456"

print "i am %s " % name

#输出: i am x5456

PS: 字符串是 %s;整数 %d;浮点数%f

b.查找字符串(find)

str.find(str, start=0, end=len(mystr))   #检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

>>> str = 'xinge 好帅'

>>> str.find('xing')

0

>>> str.find('好')

6

c.查找替换字符串中内容(replace)

mystr.replace(str1, str2, mystr.count(str1))  # 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

>>> str = 'abcabcabc'

>>> str.replace('a','xinge',2)

'xingebcxingebcabc'

d.以str为分割符切片(split)

mystr.split(str=" ", 2) # 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串

>>> str = 'a\nb\tc'

>>> str

'a\nb\tc'

>>> str.split()

['a', 'b', 'c']

f.将字符串首字母大写(capitalize)

>>> str='abc'

>>> str.capitalize()

'Abc'

g.把字符串的每个单词首字母大写(title)

>>> str = "hello world"

>>> str.title()

'Hello World'

h.startswith,endswith

startswith #检查字符串是否是以str 开头, 是则返回 True,否则返回 False

endswith  # 检查字符串是否以str结束,如果是返回True,否则返回 False.

i.upper,lower

upper  # 转换 mystr 中所有字符为大写

lower#转换 mystr 中所有字符为小写

j.strip,lstrip,rstrip

strip  # 清除左右两边的空格

lstrip  # 清除左边的空格

rstrip  # 清除右边的空格

k.join

mystr.join(str)  # mystr 中每个字符后面插入str,构造出一个新的字符串

>>> '123'.join('abc')

'a123b123c'

2、列表

a.切片

1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]2 >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4

3 ['Tenglan', 'Eric', 'Rain']4

5 >>> names[1:-1] #取下标1至-1的值,不包括-1

6 ['Tenglan', 'Eric', 'Rain', 'Tom']7

8 >>> names[0:3]9 ['Alex', 'Tenglan', 'Eric']10

11 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样

12 ['Alex', 'Tenglan', 'Eric']13

14 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写

15 ['Rain', 'Tom', 'Amy']16

17 >>> names[3:-1] #这样-1就不会被包含了

18 ['Rain', 'Tom']19

20 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个

21 ['Alex', 'Eric', 'Tom']22

23 >>> names[::2] #和上句效果一样

24 ['Alex', 'Eric', 'Tom']

View Code

b.追加

1 >>>names2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']3

4 >>> names.append("我是新来的")5

6 >>>names7 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

View Code

c.插入

1 >>>names2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']3

4 >>> names.insert(2,"强行从Eric前面插入")5

6 >>>names7 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']8

9 >>> names.insert(5,"从eric后面插入试试新姿势")10

11 >>>names12 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

View Code

d.修改

1 >>>names2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']3

4 >>> names[2] = "该换人了"

5

6 >>>names7 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

View Code

e.删除

1 >>> del names[2]2

3 >>>names4 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']5

6 >>> del names[4]7

8 >>>names9 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']10

11 >>> names.remove("Eric") #删除指定元素

12

13 >>>names14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']15

16 >>> names.pop() #删除列表最后一个值

17 '我是新来的'

18

19 >>>names20 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']

View Code

f.列表合并

1 >>>names2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']3

4 >>> b = [1,2,3]5

6 >>>names.extend(b)7

8 >>>names9 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

View Code

g.浅copy

1 >>>names2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]3

4 >>> name_copy =names.copy()5

6 >>>name_copy7 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

View Code

h.深copy

1 importcopy2

3 n1 = [1,2,3]4

5 n2 = copy.deepcopy(n1)

View Code

i.统计

1 >>>names2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]3

4 >>> names.count("Amy")5 2

View Code

j.排序&翻转

1 >>>names2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]3 >>> names.sort() #排序

4 Traceback (most recent call last):5 File "", line 1, in

6 TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦

7 >>> names[-3] = '1'

8 >>> names[-2] = '2'

9 >>> names[-1] = '3'

10 >>>names11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']12 >>>names.sort()13 >>>names14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']15

16 >>> names.reverse() #反转

17 >>>names18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

View Code

k.获取下标

1 >>>names2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']3 >>> names.index("Amy")4 2 #只返回找到的第一个下标

View Code

3、元组

元组和列表的区别就是元组不可更改,所以它只有2个方法,count和index。

4、字典(键值对集合)

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

特性:

dict是无序的

key必须是唯一的,天生去重

a.增加

1 >>> info["stu1104"] = "abc"

2 >>>info3 {'stu1102': 'x5456', 'stu1104': 'abc', 'stu1103': 'Mali', 'stu1101': 'Wu'}

View Code

b.修改

1 >>> info['stu1101'] = "xinge"

2 >>>info3 {'stu1102': 'x5456', 'stu1103': Mali','stu1101':'xinge'}

View Code

c.删除

1 >>>info2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}3 >>> info.pop("stu1101") #标准删除姿势

4 '武藤兰'

5 >>>info6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}7 >>> del info['stu1103'] #换个姿势删除

8 >>>info9 {'stu1102': 'LongZe Luola'}10 >>>

11 >>>

12 >>>

13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}14 >>>info15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除

16 >>>info.popitem()17 ('stu1102', 'LongZe Luola')18 >>>info19 {'stu1103': 'XiaoZe Maliya'}

View Code

d.查找

1 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}2 >>>

3 >>> "stu1102" in info #标准用法

4 True5 >>> info.get("stu1102") #获取

6 'LongZe Luola'

7 >>> info["stu1102"] #同上,但是看下面

8 'LongZe Luola'

9 >>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None

10 Traceback (most recent call last):11 File "", line 1, in

12 KeyError: 'stu1105'

View Code

e.获取所有键/值

1 #values

2 >>>info.values()3 dict_values(['LongZe Luola', 'XiaoZe Maliya'])4

5 #keys

6 >>>info.keys()7 dict_keys(['stu1102', 'stu1103'])

View Code

f.字典合并

1 #update

2 >>>info3 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}4 >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}5 >>>info.update(b)6 >>>info7 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

View Code

g.深copy

import copy

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}

n4 = copy.deepcopy(n1)

h.字典循环

#方法1

for key in info:

print(key,info[key])

#方法2

for k,v in info.items(): #会先把dict转成list,数据里大时莫用

print(k,v)

5、集合操作

集合是一个无序的,不重复的数据组合,它的主要作用如下:

去重,把一个列表变成集合,就自动去重了

关系测试,测试两组数据之前的交集、差集、并集等关系

常用操作:

s = set([3,5,9,10]) #创建一个数值集合

t = set("Hello") #创建一个唯一字符的集合

a = t | s # t 和 s的并集

b = t & s # t 和 s的交集

c = t – s # 求差集(项在t中,但不在s中)

d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add('x') # 添加一项

s.update([10,37,42]) # 在s中添加多项

使用remove()可以删除一项:

t.remove('H')

len(s)

set 的长度

x in s

测试 x 是否是 s 的成员

x not in s

测试 x 是否不是 s 的成员

s.issubset(t)

s <= t

测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s >= t

测试是否 t 中的每一个元素都在 s 中

s.union(t)

s | t

返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s & t

返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s - t

返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s ^ t

返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()

返回 set “s”的一个浅复制

6、文件读写

对文件操作流程

打开文件,得到文件句柄并赋值给一个变量

通过句柄对文件进行操作

关闭文件

f = open('lyrics') #打开文件

first_line = f.readline()

print('first line:',first_line) #读一行

data = f.read()# 读取剩下的所有内容,文件大时不要用

print(data) #打印文件

f.close() #关闭文件

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

r+,可读写文件。【可读;可写;可追加】

w+,写读

a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

rU

r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb

wb

ab

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f:

...

二、循环

一、while循环

while 条件:

# 循环体

# 如果条件为真,那么循环体则执行

# 如果条件为假,那么循环体不执行

二、for循环

用户按照顺序循环可迭代对象中的内容,

li = [11,22,33,44]

for item in li:

print item

break:跳出整个循环

continue:跳出当前循环

enumrate

为可迭代的对象添加序号

li = [11,22,33]

for k,v in enumerate(li, 1):

print(k,v)

range

指定范围,生成指定的数字

print range(1, 10)

# 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

print range(1, 10, 2)

# 结果:[1, 3, 5, 7, 9]

print range(30, 0, -2)

# 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值