python语法基础
2019-04-27
--张伯羽
1.字符串的常用操作
查看字符串/列表的操作:
print(dir(''))
print(dir([]))
常用:find(),replace(),split(),count(),join(),stript()
my_str = 'hello world neuedu and neueducpp'
- 1.replace() 把目标字符串替换成其他字符串
name = 'hello world haha'
new_name = name.replace('ha', 'Ha', 1)
print(new_name)
price = "$599"
price = price.replace('$', '')
print(price)
hello world Haha
599
- 2.split() 以 str 为分隔符分割 name,如果 maxsplit 指定值,那么仅分割 maxsplit 个子串
name = 'hello ha ha ha'
name_list = name.split(" ")
print(name_list)
name_list1 = name.split(' ', 2)
print(name_list1)
['hello', 'world', 'ha', 'ha']
['hello', 'world', 'ha ha']
- 3.join() 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
str4 = " "
list1 = ['my','name','is','songxiaobao']
my_name = str4.join(list1)
print(my_name)
# _ / ,
my_name = ",".join(list1)
print(my_name)
my name is songxiaobao
my,name,is,songxiaobao
- 4.capitalize() 把字符串的一个字符大写
my_str2 = my_str.capitalize()
print(my_str2)
- 5.title() 把字符串的每个单词首字母大写
my_str3 = my_str.title()
print(my_str3)
- 6.startwith 检测字符串是否以 str 为开头
my_str4 = my_str.startswith('hello')
print(my_str4)
my_str5 = my_str.startswith('Hello')
print(my_str5)
- 7.endwith() 检测字符串是否以str为结尾
my_str6 = my_str.endswith('cpp')
print(my_str6)
- 8.upper 把字符串的所有变为大写
my_str7 = my_str.upper()
print(my_str7)
- 9.lower 字符串的所有变为小写
my_str8 = my_str7.lower()
print(my_str8)
- 10.rjust 返回一个原字符串右对对齐的并用空格填充 width长度的新字符串
my_str_space = 'hello'
new_my_str_space = my_str_space.rjust(11)
print(len(new_my_str_space))
print(new_my_str_space)
- 11.ljust 返回一个原字符串左对齐对对齐的并用空格填充 width长度的新字符串
new_my_str_space1 = my_str_space.ljust(100)
print(new_my_str_space1)
print(len(new_my_str_space1))
- 12.center()
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
print(len(new_my_str_space2))
- 13.lstrip 清除字符串左边的空白字符
print(new_my_str_space2)
print(len(new_my_str_space2)) # 50
new_str2 = new_my_str_space2.lstrip()
print(len(new_str2))
print(new_str2)
- 14.rstrip()清除字符串右边的空白字符
new_str3 =new_str2.rstrip()
print(len(new_str3)) # 5
print(new_str3)
- 15.strip() 删除两端的空白字符
str1 = '\n\tdadadad\t'
print(len(new_my_str_space2))
new_str4 = new_my_str_space2.strip()
print(len(new_str4))
print(len(str1))
str2 = str1.strip()
print(len(str2))
- 16.find ---> rfind
index5 = my_str.rfind('neuedu')
print(index5)
rindex ------> index
- 17.partition 把mystr以str分割成3部分 str前,str , str后
print(my_str)
t_mystr = my_str.partition('neuedu')
print(t_mystr) # 元组
- 18.rpartition 从右边开始
- 19.splitlines 按照行分隔,返回一个包含各行作为元素的列表
line = 'hello\nworld'
print(line)
list_line = line.splitlines()
print(list_line)
- 20.isalpha 判断字符串是否都是字母 返回True或False
alpha = my_str.isalpha()
print(alpha)
alpha2 = 'dddddddd'
alpha3 = alpha2.isalpha()
print(alpha3)
- 21.isalnum 判断是否只有字母或者数字
alpha2.isalnum()
2.列表
- 列表的排序
sort()和sorted()的区别:
<1>.sort() 是对原来的列进行排序,sorted()是返回一个新的列表,原来的没有改变
<2>.sort() 是属于列表的成员方法,sorted()是对所有可迭代的对象的方法
<3>.ls.sort(key reverse) ;sorted(ls)
from random import randint
# import random
num = randint(-10, 10) # [-10,10]
# print(num)
num_list = []
for _ in range(10):
num_list.append(randint(1, 20))
print(num_list)
# sort()
num_list.sort()
print('正序排序:', num_list)
num_list.sort(reverse=True)
print('逆序排序:', num_list)
# sorted()
new_list = sorted(num_list)
print(num_list)
print(new_list)
- 列表的添加
1.append()用法
list.append(obj)
obj表示新增元素
str = input('请输入您要添加的内容')
name_list.append(str)
2.insert()用法
在指定位置前插入元素object
list.insert(index, obj)
index 表示对象 obj 需要插入的索引位置。
obj 表示要插入列表中的对象。
a = [0,1,2]
a.insert(1, 10)
print(a)
3.extend()用法
可以将另外一个集合主意添加到列表中
list.extend(seq)
seq 表示元素列表
a = [1, 2]
b = [3, 4]
a.append(b)
print(a)
a.extend(b)
print(a)
- 列表的修改
name_list[1] = '小明'
print(name_list)
- 查找
in; not in
find_name = '和平缔造者'
if find_name not in name_list:
print('不在')
else:
print('在')
- 列表的删除
del[下标]
pop()
remove()
del :根据下标进行删除
del name_list[0]
print('删除hou', name_list)
pop 删除最后一个元素
name_list.pop()
print('删除hou', name_list)
remove 根据元素的值进行删除
name_list.remove('xiaoming')
print('删除后', name_list)
- 列表的二维嵌套
school_name = [['qinghua', 'beida'], ['nankai', 'tianda'], ['dongqin', 'yanda']]
print(school_name)
print(school_name[0][1])
# "print(school_name[0, 1])"这种写法在此处不可
- 列表推导式:轻量级循环列表
# list1 = []
# for i in range(10):
# list1.append(i)
# print(list1)
list2 = [i for i in range(10)]
print(list2)
list3 = ["法兰" for _ in range(5)]
print(list3)
# [ _ for i in range]
- 分配工作问题
# 一个学校,三个办公室,现在有8位老师等待工作的分配
import string
from random import randint
# import random.randint as rit
# 定义3个办公室
offices = [[], [], []]
# 定义8为老师
names = string.ascii_uppercase[:8]
# names = list(names)
print(names)
for name in names:
# 产生一个随机数[0,2]
index = randint(0,2)
offices[index].append(name)
print(offices)
i = 1
for tempNames in offices:
print('办公室{}的人数为{}'.format(i, len(tempNames)))
i += 1
print('成员为:')
for name in tempNames:
print('{}'.format(name),end='')
print('\n')
print('~'*30)
列表转字符串
list = str(list)同时遍历
zip() 用于将可迭代对象作为参数,将对象中的对应的与元素打包成
一个元组,然返回这些元组对象 节约内存
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7 ,8]
zipped = zip(a, b)
print(zipped)
print(list(zipped))
zipped1 =zip(a, c)
print(list(zipped1)) #长度不一致,与最短的对象相同
示例:
guns = ['mp18', 'm1918']
bullet_num = ['32', '24']
for guns, bullet_num in zip(guns, bullet_num):
print(guns, '---->',bullet_num)
3.元组
元组不能修改,不能删除
- 访问
a = ('ddd',111,0.88)
print(type(a))
print(a[0])
- 1.index() 返回改元素在元组中第一次出现的位置
2.count() 返回目标元素在元组中的个数
a = ('a', 'b','c', 'b', 'a')
index1 = a.index('a')
print(index1)
c = a.count('b')
0
2
4.字典
key ----> value
- 访问
1.dict['key'](访问不存在的键会报错)
info = {'name': '刘强东', 'age': 45, 'id': 32453432543, 'address': '北京'}
# 访问 根据 键进行访问
print(type(info))
print(info['name'])
# 访问不存在的键会报错
# print(info['sex'])
<class 'dict'>
刘强东
2.get()
# 使用get()方法
age = info.get('age')
print(age)
mail = info.get('mail')
print(mail)
45
None
当我们不确定字典中是否存在某个key,而且还要获得其value,可以使用get设置默认值
mail = info.get('mail', '122@jingdong.com') # 设置默认值(没有时才起作用)
print(mail)
122@jingdong.com
- 修改(通过key)
# 修改
info['name'] = '马云'
print(info)
{'name': '马云', 'age': 45, 'id': 32453432543, 'address': '北京'}
- 添加(通过key)
# 添加元素
info['sex'] = '男性'
print('添加后:', info)
添加后: {'name': '刘强东', 'age': 45, 'id': 32453432543, 'address': '北京', 'sex': '男性'}
- 删除
# del info['name']
# print('删除后:', info)
# # del info 删除整个字典,再访问时会报错
# clear
info.clear()
print('after clear ', info)
after clear {}
- 字典的常用操作
print(len(info)) # k-v 的个数
keys = info.keys()
print(keys)
values = info.values()
print(values)
# (keys,value)
items = info.items()
print(items)
4
dict_keys(['name', 'age', 'id', 'address'])
dict_values(['刘强东', 45, 32453432543, '北京'])
dict_items([('name', '刘强东'), ('age', 45), ('id', 32453432543), ('address', '北京')])
4.集合
无序性 唯一性
一般用于元素去重
set1 = {1, 2, 5, 4} #集合
- 添加 add()
set1.add(8)
print(set1)
{1, 2, 4, 5, 8}
- 删除
1.remove()不存在会报错
# 删除
# 不存在会报错
set1.remove(1)
print(set1)
2.pop()随机删除集合中的元素,集合中没有会报错
# pop 随机删除集合中的元素,集合中没有会报错
set1.pop()
print(set1)
3.discard()
# discard 存在直接删除,不在则不做任何操作
set1.discard(3)
set1.discard(4)
print(set1)
{1, 2, 5, 8}
5.字典解析和集合解析实例
- 字典解析
# 随机创建一个班级的分数
from random import randint
grades = {'student{}'.format(i): randint(50, 100) for i in range(1, 21)}
print(grades)
# 筛选出高于90分的人
d = {k: v for k, v in grades.items() if v >= 90}
print(len(d))
print(d)
- 集合解析
# 随机创建一个班级的分数
set1 = {randint(0, 20) for _ in range(20)}
print(set1)
# 找到能整除3的
res = {x for x in set1 if x % 3 == 0}
print(res)
6.函数
def 函数名(num):
pass
- 示例
def caculateNum(num):
'''
计算 1~num 之间的累加和
:param num: 累加和的末尾
:return: 累加和
'''
res = 0
for i in range(1, num+1):
res += i
return res
r = caculateNum(100)
print(r)
5050