python学习(二)

python学习(二)

列表推导式

  • 列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表

list=[表达式 for var in range]

list2=[random.randint(10,100) for i in range(10)]   #使用列表推导式
list3=[i*i for i in range(2,11,2)]

结果:

[14, 81, 92, 23, 29, 50, 34, 63, 85, 26]
[4, 16, 36, 64, 100]

根据列表生成指定需求的列表 :
newlist=[表达式 for var in list]
从列表中选择符合条件的元素组成新的列表:
newlist=[表达式 for var in list if condition]

price=[1000,840,320,666]
sale=[int(x*0.5) for x in price]
sale=[x for x in price if x>800]

元组

  • 元组不可变,不能随意更改里面的内容

元组的创建和删除

1、使用赋值运算符直接创建元组
2、创建空元组
3、创建数值元组

#使用赋值运算符直接创建元组
number=(7,"python",[23,12],28,35,42)
# 创建空元组
emptytuple=()
# 创建数值元组
tuple1=tuple(range(2,21,2))

删除元组

del tuplename

访问元组元素

1、直接使用print()函数输出
2、索引
3、切片

print(tuple1)
print(tuple1[2])
print(tuple1[2:4])
for name in tuple1:
    print(name,end=' ')

结果:

(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
6
(6, 8)
2 4 6 8 10 12 14 16 18 20 

修改元组元素

  • 单个元组的元素不能直接修改,可对整个元组重新赋值
  • 元组+元组

元组推导式

  • 元组推导式可以快速生成一个元组,或者根据某个元组生成满足指定需求的元组
  • 类似列表推导式
randomnumber=(random.randint(10,100) for i in range(10))    #得到生成器对象
print(randomnumber)

for i in randomnumber:
    print(i,end=" ") #输出每个元素的值

# print(randomnumber.__next__())  #输出第一个元素
# print(randomnumber.__next__())  #输出第二个元素
# print(randomnumber.__next__())  #输出第三个元素

print(tuple(randomnumber))  #将生成器对象转换为元组

元组与列表的区别

在这里插入图片描述

字符串常用操作

拼接字符串

字符串1+字符串2=字符串1字符串2

str1='我今天走了'
num=23
str2='步'
print(str1+str(num)+str2)

计算字符串的长度

len(string)

str1="人生苦短,我用python"
print(len(str1))
print(len(str1.encode()))   #计算utf-8下的字符串长度
print(len(str1.encode("gbk")))   #计算GBK下的字符串长度

截取字符串

string[start : end : step]

分割、合并字符串

分割:
listname=str.split(sep,maxsplit)
sep:空格、换行符(\n)、制表符(\t)
maxsplit:分割次数,-1表示没有限制

str="@zsbkj @ksandj @jdkajlk @ajkdb"
list=str.split(' ')        #用空格分隔字符串
for item in list:
    print(item[1:]) #输出每个@后面的值

合并:
strnew=string.join(iterable)
string:指定合并时的分割符
iterable:可迭代对象

list=['nsjka','kas','nkas','mlkasn']    #好友列表
str=" @".join(list) #用空格和@进行连接
print("@"+str)

检索字符串

count():检索指定字符串在另一个字符串中的次数的

str.count(sub[,start[,end]])

find():获取指定字符串首次出现的索引值,不存在时为-1

str.find(sub[,start[,end]])

index():获取指定字符串首次出现的索引值,不存在时抛出异常

str.index(sub[,start[,end]])

startswith():检索是否以指定的字符串开头

str.startswith(prefix[,start[,end]])

endswith():检索是否以指定的字符串结束

str.endswith(prefix[,start[,end]])

str="@zsbkj @ksandj @jdkajlk @ajkdb"
print(str.count("@"))
print(str.find("@ka"))
print("@" in str)
print(str.rfind("@"))
print(str.index("@"))
print(str.startswith("@"))
print(str.endswith("n"))

结果:

4
-1
True
24
0
True
False

字母的大小写转换

大写字母转小写字母:lower()
小写字母转大写字母:upper()

str="WWWa.wan.jdak"
print(str.lower())
print(str.upper())

结果:

wwwa.wan.jdak
WWWA.WAN.JDAK

去除字符串中的空格和特殊字符

strip():去除字符串左右两边空格和特殊字符

str.strip([chars])

 str=' http://www.zr.com \t\n\r'
print(str.strip())

结果:

http://www.zr.com

lstrip():去除左侧特殊字符或字符串

str.lstrip([chars])

rstrip():去除右侧特殊字符或字符串

格式化字符串

1、使用%操作符

'%[-][+][0][m][.n]格式化字符'%exp

template="编号:%09d\t公司名称:%s\t官网:http://www.%s.com"   #定义模板
item=(7,'百度',"baidu")
print(template%item)

结果:

编号:000000007	公司名称:百度	官网:http://www.baidu.com

2、使用字符串对象的format()方法----推荐

str.format(args)

str:{[index][:[[fill]align][sign][#][width][.precision][type]]}

template="编号:{:0>9s}\t公司名称:{:s}\t官网:http://www.{:s}.com"#模板
print(template.format("9","百度","baidu"))

正则表达式

网上搜吧

使用re模块实现正则表达式的操作

1、匹配字符串

  • match()

re.match(pattern,string,[flags])

flags:re.I–不区分字母大小写 ;re.A–让\w不匹配汉字

import re
pattern=r'mr_\w'    #模式字符串
string='mR_shop mr_shop'    #要匹配的字符串
str='mi_shop mi_shop'
match=re.match(pattern,string,re.I) #匹配字符串
matc=re.match(pattern,str)
print(match)
print('起始位置:',match.start())
print('结束位置:',match.end())
print('匹配数据:',match.group())
print(matc)
<re.Match object; span=(0, 4), match='mR_s'>
起始位置: 0
结束位置: 4
匹配数据: mR_s
None

小程序:验证移动手机号

pattern=r'(13[4-9]\d{8})|(15[01289]\d{8}$)'     #模式字符串
mobile="15072165526"    #要匹配的手机号
match=re.match(pattern,mobile)
if match==None:
    print('输入无效手机号')
else:
    print('输入有效!')
  • search()

re.search(pattern,string,[flags])

小程序:检验是否含有危险字符

pattern=r'(黑客)|(Trojan)'
about='我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan'
match=re.search(pattern,about)
if match==None:
    print("不含危险字符!")
else:
    print("含有危险字符!")
  • findall()

re.findall(pattern,string,[flags])

import re
pattern=r'mr_\w'    #模式字符串
string='mR_shop mr_shop'    #要匹配的字符串
match=re.findall(pattern,string,re.I) #匹配字符串
print(match)
['mR_s', 'mr_s']

2、替换字符串

  • sub()

re.sub(pattern,repl,string,count,flags)

小程序:替换危险字符

pattern=r'(黑客)|(Trojan)'
about='我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan'
match=re.sub(pattern,'**',about)
if match==None:
    print("不含危险字符!")
else:
    print(match,"含有危险字符!")
我是一名程序员,我喜欢看**方面的图书,想研究一下** 含有危险字符!

3、分割字符串

  • split()

re.split(pattern,string,[maxsplit],[flags])

pattern=r'[?|&]'
url="http://www.zr.com/login.jsp?username='zr'&pwd='123'"
result=re.split(pattern,url)
print(result)
['http://www.zr.com/login.jsp', "username='zr'", "pwd='123'"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值