[Python] 基础篇-实用语法操作
2021-05-13 06:29
标签:个数 注意 默认值 数组 区别 匿名函数 war 去重 not 3.文件写操作 注意模式的更换,如果文件存在,不想覆盖原内容的话,选择a+模式即可。 ? 牵扯到编码的话,这里可以加mode ,encoding = ‘xx‘,python2.7需要使用io.open(open会报错),python3不使用open不会报错 匿名函数就是功能非常简单只需要一行代码就可以实现的,例如,求圆形面积 使用匿名函数有个好处,因为函数没有名字,不用担心函数名冲突,此外匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量调用该函数。 [Python] 基础篇-实用语法操作 标签:个数 注意 默认值 数组 区别 匿名函数 war 去重 not 原文地址:https://www.cnblogs.com/xiaoqiangink/p/13130920.html
1.if str1 in str2:
#包含的话,True
2.if str1.find(str2)>=0:
#包含的话,返回第一次出现的位置,没有的话为负数
#raw_input()默认把所有输入当作字符串处理
#input() 输入进来什么类型就是什么类型
#也就是说,数字类型直接输入它就是数字类型,你不能把它当作字符串操作处理,不然报错,你可以加str()强转
#如果输入字符串你要带"",不然会报错 "xx is not defined"
f=file("hello.txt","w")
li=["hello world\n","hello china\n"]
f.writelines(li)
for key in li:
f.write(key)
f.close()
#或者是通过with open:
dest = "hello1.txt"
res = "world"
with open(dest,‘w‘) as f:
f.write(res)
f.close()
#比如文件现在有两行,进行读操作:
‘‘‘
hello,world
hello, China
‘‘‘
import io
file_name = "hello.txt"
with io.open(file_name, ‘r+‘, encoding = ‘utf-8‘) as f:
read_data = f.read()
print read_data
#readline会记住上一个readline函数读取的位置,接着读取下一行,(size)为读取当前行长度
#readlines方法则是读取所有行,返回的是所有行组成的列表。
#read()直接读取
with open(file_name) as f:
# print(f.readlines())
# print(f.readline())
# print(f.readline())
# print(f.readline(3))
read_data = f.read()
print read_data
f.close()
#1.split()函数
#str.split(‘分割符‘),通过该分割操作后,会返回一个列表。
str_test = "hello,world"
print str_test.split(‘,‘)
#2.splitlines()函数
#object.splitlines(),按行分割,通过该分割操作后,会返回一个列表。strip()去除前后空格
str_test = ‘‘‘
hello
world
‘‘‘
res = (str_test.strip()).splitlines()
print res
#3.正则表达式分割
#re.split(‘分割符1|分割符2‘,objects) --> 不同的分割符用‘|‘进行间隔(分割符需要进行‘\‘的转义操作),然后objects为需要分割的字符串对象。
import re
test = ‘hello,www@or#ld‘
print re.split(‘@|\#‘,test)
#4.使用replace 替换成换行符
test = ‘hello,www@or#ld‘
print test.replace(‘@‘,"\n")
#1. for in
test = ‘hello,world‘
for char in test:
print char
#2.for in range() or xrange()
for index in range(len(test)):
print test[index]
#3.enumerate()
for index,char in enumerate(test):
print index,test[index],char
#4.iter()
for char in iter(test):
print char
#1. 使用‘+‘连接
test = "hell"
test1 = "o"
print test+test1
#2.使用.join(iterable) 拼接
list_str = [test,test1]
res = ‘‘
print res.join(list_str)
#3.format 拼接
#eg(1){}占位符
str_test = ‘hello,world {}{}‘.format("你好","世界")
print str_test
#eg(2){[index]} 按索引位置填充 .format([0]=value1, [1]= value1},)
str_test1 = ‘hello,world {0}{1}‘.format("你好","世界")
str_test2 = ‘hello,world {1}{0}‘.format("你好","世界")
print str_test1
print str_test2
# eg(3) {[keyword]}
str_test3 = ‘hello,world {name}{value}‘.format(name = "你好",value ="世界")
print str_test3
#方法1
N = 5
listOfLists = [[] for i in range(N)]
print listOfLists
#方法2
lst = [None] * 5
print lst
#方法1
#通过set函数去重
list1=[11,22,11,22,33,44,55,55,66]
print(list1)
print(list(set(list1)))
#方法2
list1=[11,22,11,22,33,44,55,33,66]
list2=[]
for i in list1:
if i not in list2:
list2.append(i)
print(list1)
print(list2)
#浅拷贝:就是在内存中将第一层额外开辟空间进行存放。
import copy
n1 = {"k1": "abc", "k2": 123, "k3": ["abc", 123]}
print(id(n1)) #4514185296
n2 = copy.copy(n1)
print(id(n2)) #4514186976可以看n2的内存地址已经和n1不同了
print(id(n1[‘k3‘])) #4514126448
print(id(n2[‘k3‘])) #4514126448 字典里的列表还是指向同一个列表
#深拷贝就是在内存中将数据重新创建一份,不仅仅是第一层,第二层、第三层...都会重新创建
n1 = {"k1": "abc", "k2": 123, "k3": ["abc", 123]}
print(id(n1)) #4390219856
n3 = copy.deepcopy(n1)
print(id(n3)) #4390222096
print(id(n1[‘k3‘])) #4390161008
print(id(n3[‘k3‘])) #4390160936 #可以看到第二层的列表也拷贝了一份,内存地址已经完全不一样
#1.位置参数
def Foo1(arg1, arg2):
print(arg1, arg2)
Foo1(‘abc‘, 123)
#输出结果 abc 123
#2.默认参数
#我们可以给某个参数指定一个默认值,当调用时,如果没有指定那个参数,那个参数就等于默认值
def Foo2(arg1, arg2 = 123):
print(arg1, arg2)
Foo2(‘abc‘)
Foo2(‘abc‘, 345)
#3.可变参数
#可变参数就是传入的参数个数是可变的,也可以是0个,例如
def Foo3(*args):
print(args)
Foo3(1, 2, ‘abc‘)
#4.关键字参数
#可变参数在调用过程中会组装成元组,元组只能通过索引进行调用,有时不是很方便,故Python可以通过关键字索引将传入的参数组装成字典
def Foo4(**kwargs):
print(kwargs, type(kwargs))
Foo4(k1 = ‘abc‘, k2 = 123)
#执行结果 {‘k2‘: 123, ‘k1‘: ‘abc‘}
f = lambda r: 3.14 * r * r
print(f(4)) # 输出 50.24
#r相当于匿名函数的参数,当然也可以有多个参数,不用在写return,表达式就是返回的结果。