Python第二天学习

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容