每日一酌:身材不好就去锻炼,没钱就努力去赚。别把窘境迁怒于别人,唯一可以抱怨的,只是不够努力的自己。
正题
字符串和常用数据结构
字符串
str1 = 'hello,word!'
#字符串长度
print(len(str1))
#获取字符串首字母大写
print(str1.capitalize())
#获取全部大写的拷贝
print(str1.upper())
#从字符串中查找子串所在位置
print(str1.find('or')) #返回的是查询的第一个字母在字符串的索引,find找不到子串时会引发异常
#检查字符串是否以指定的字符串开头,结尾
print(str1.startswith('he')) #true
print(str1.endswith('ds')) #false
#将字符串以指定宽度居中并在两侧填充指定的字符
print(str1.center(50,'*'))
# 将字符串以指定的宽度靠右放置左,右侧填充指定的字符
print(str1.rjust(50, '*'))
print(str1.ljust(50,'*'))
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit())
# 检查字符串是否以字母构成
print(str2.isalpha())
#检查字符串是否以数字和字母构成
print(str2.isalnum())
#获取字符串修剪左右两侧空格
str3 = ' jskdalkds j sada'
print(str3.strip())
print(str3.lstrip())
print(str3.rstrip())
使用列表
list1 = [12,34,5,5,7,8,9]
# print(list1)
# 重复打印五次
# list2 = ['HELLO'] * 5
# print(list2)
# 计算列表长度(元素个数)
# print(len(list1))
# 添加元素
# list1.append(200)
# list1.insert(1, 400)
# list1 += [1000, 2000]
# print(list1)
# print(len(list1))
# 删除元素
# print(list1.remove(12))
# del list1[1]
# print(list1)
#清空列表元素
# print(list1.clear())
fruits = ['grape', 'apple', 'strawberry', 'waxberry']
fruits += ['asd','asdwrf','yutfhgh']
# print(fruits)
# 循环遍历列表元素
# for fruit in fruits:
# print(fruit.title(),end="")
#列表切片
# fruit2 = fruits[1:2]
# print(fruit2)
# 默认排序是升序
list2 = sorted(list1)
print(list2)
# sorted函数返回列表排序后的拷贝不会修改传入的列表
# 函数的设计就应该像sorted函数一样尽可能不产生副作用
list3 = sorted(list1,reverse=True)
print(list3)
# 通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序
list4 = sorted(fruits, key=len)
print(list4)
# 给列表对象发出排序消息直接在列表对象上进行排序
list1.sort(reverse=True)
print(list1)
列表的生成器
通过yield关键字将函数改造成生成器函数
import sys
#简单的列表生成器 x 是参数,每次循环将值赋给x ,依次放入列表
f = [x for x in range(10)]
print(f)
#有条件的生成器,把满足条件的放在列表里
f1 = [x for x in range(10) if x%2 == 0]
print(f1)
# 进行循环嵌套,相当于外层x,内层是y,依次放入列表
f3 = [x + y for x in 'ABCDE' if x == 'A' for y in '1234567']
print(f3)
# 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
f = [x ** 2 for x in range(1, 1000)]
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
# 查看对象占用内存的字节数print(f)
# 通过生成器可以获取到数据但它不占用额外的空间存储数据
# 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
# 相比生成式生成器不占用存储数据的空间
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f))
元组
注意元组不可修改元素,其他与列表相似。元组在创建时间和占用的空间上面都优于列表
t = ('哈哈', 38, True, '爱德华')
# 获取元组中的元素
print(t[0])
print(t[3])
#遍历元组中的值
for num in t:
print(num)
# 变量t重新引用了新的元组原来的元组将被覆盖
t = ('我在那', 20, True, '你是谁')
# 将元组转换成列表
person = list(t)
print(person)
#将列表转换成元组
list1 = tuple(person)
print(list1)
集合
set1 = {1, 2, 3, 3, 3, 2}
print(set1)
# print('Length =', len(set1))
set2 = set(range(1, 10))
# print(set2)
# set1.add(4)
# set2.update([11, 12])
# print(set1)
# print(set2)
# set2.discard(5)
# remove的元素如果不存在会引发KeyError
# set1.remove(7)
# 遍历集合容器
# for i in set2:
# print(i**2,end='')
#将元组转换成集合
# set3 = set(1,23,4,56,4)
# print(set3.pop())
# print(set3)
# 集合的交集、并集、差集
print(set1 & set2)
print(set1.intersection(set2))
print(set1 | set2)
print(set1.union(set2))
print(set1 - set2)
元组remove()hediscard()的区别
字典
简介:字典的一切操作都是通过键名操作键值,字典是无序的,没有索引操作,除非转换成有序字典
score = {'as':54,'拜把':78,'卫道士':96}
# 通过键可以获取字典中对应的值
# print(score['as'])
# print(score['拜把'])
# 对字典进行遍历(遍历的其实是键再通过键取对应的值)
# for i in score:
# print('%s\t--->\t%d' % (i, score[i]))
# 更新字典中的元素
# score['as'] = 56
# print(score)
#添加元素
score.update(冷面=67, 方启鹤=85)
print(score)
if '字典' in score:
print(score['字典'])
print(score.get('字典'))
print(score.get('武则天', 60))
# 删除字典中的元素
print(score.popitem())
print(score)
print(score.pop('as',54))
score.clear()
print(score)