python学习第01篇-20181030

这是本人的第一个python学习的博客,由于python之前的基础语法比较简单,本人就选择从python的数据结构开始。一下为学习笔记:

print("-----------python的数据结构---------------")
# 列表list
# 定义
s = [1, 2, 3, 4, 5]

# 获取元素的方式 s[index]
print(s[0])
print(s[-1])  # 取最后一个元素
print(s[-2])  # 取倒数第二个元素
print(s[1:3])  # 取index为1~3的元素,不包括3
print(s[1:])  # 取从1开始到最后的所有元素
print(s[:-2])  # 取从0开始到倒数第二个元素的位置,不包括倒数第二个元素

# 常用函数
'''
s.append(x)  将追加到列表尾部
s.extend(L)  将列表L中的所有元素追加到s尾部形成新的列表
s.insert(i,x) 在列表中index=i的位置插入x元素
s.reverse(x) 删除列表中第一个为x的元素,若不存在,引发一个异常
s.pop(i) 删除index为i的元素,并将删除的元素显示。若不指定i,则弹出最后一个元素
s.clear() 清空列表
s.index(x) 返回第一个x元素的位置,若不存在则报错
s.count(x) 统计列表中x元素的个数
s.reverse() 将列表反向排序
s.sort() 将列表从小到大排序。若需要从大到小排序,则用s.sort(reverse=True)
s.copy() 返回列表的副本
'''

# 元组tuple
# 定义
t = (1, 2, 3)
'''
元组一旦确定就可更改
在python中,如果多个变量用逗号隔开,则默认将多个变量按照tuple的形式组织起来
元组与列表的取值相同
常用函数:
t.count(x) 计算x在元组中出现的次数
t.index(x) 计算第一个x元素的位置
'''

print(t.count(2))
print(t.index(3))

# 集合 set
# 定义
l = {1, 2, 3, 4, 1, 2, 3}
'''
set不能保存重复元素,具有过滤重复数据的功能
set中元素的位置是无序的,因此不能用set[i]方式获取元素

对于数组或者元组来说,可以用set函数取出重复元素
'''
L = [1, 2, 2, 3, 3, 4, 4, 4, 5]
T = 1, 2, 3, 4, 4, 4, 5, 5, 5, 6
SL = set(L)
print(SL)
ST = set(T)
print(ST)

# print(ST+SL) 错
# print(SL * 3) 错

# 集合的操作
'''
x in S              如果S中包含x,返回True,否则False
x not in S
S + T               连接S与T,返回连接后的新集合   set与dict不能连接
S * n 或者n * S      将S延长自身n次              set与dict不能用*连接
len(S)              返回S的长度
'''

# 字典 dict 字典又称键值对
# 定义:
dic = {1: 10, 2: 20, "a": 30, 5: "hello"}

# 取值方式
print(dic[1])
print(dic.get(5))
print(dic.get('a'))
# print(dic * 3) 错
d = dic.copy()
# print(d + dic) 错

'''
常用函数:
dic.items()
dic.keys()
dic.values()
dic.pop(x) 弹出key=x的value
dic.copy() 返回字典dic的副本
dic.clear() 清空字典
'''

# list tuple set 三种数据结构,相同操作函数
'''
求长度:
len(L)
求最小值
min(L)
求最大值:
max(L)
求和:
sum(L)
'''


def add1(x):
    return x + 1


L1 = [1, 2, 3, 4, 5]
L2 = list(map(add1, L1))  # 将函数应用于L1的某一项,list set tuple都可以
print(L2)

# 迭代 list set tuple 都可以迭代
print("------迭代-------")
for x in L1:
    print(x)

T3 = (1, 2, 3, 4, 5)
for i in T3:
    print(i)

S3 = {1, 2, 3, 4, 5}
for x in S3:
    print(x)

print("-------获取迭代器----------")
i = L1.__iter__()
print(next(i))
print(i.__next__())

t = T3.__iter__()
print(t.__next__())
print(next(t))

s3 = S3.__iter__()
print(s3.__next__())
print(next(s3))

print("-----------字典dict结构,常用操作------------")
D = {1: 2, 3: 4, 'a': '2sf', 'er': 123}
for x in D:
    print(x, D[x])

print("----------字典获取迭代器------------")
d = D.__iter__()
print(next(d))
print(D[next(d)])
print(d.__next__())

print("------------约瑟夫问题-------------")


def move(man, sep):
    for i in range(sep):
        p = man.pop(0)
        man.append(p)


def play(man=41, sep=3, reset=2):
    # 初始化
    man = [i for i in range(1, man + 1)]
    print(man)
    sep -= 1
    while len(man) > reset:
        move(man, sep)
        man.pop(0)  # kill掉
    return man


man = play()
print(man)

print("-------------3个函数 map filter reduce-----------------")
# 遍历函数map
'''
map() 对集合遍历,对序列中每个元素进行操作,最终返回新的序列
'''
old_list = [1, 2, 3, 4, 5, 6]
new_list = map(lambda a: a + 10, old_list)
print(list(new_list))

list1 = [11, 22, 33, 44]
list2 = [1, 2, 3, 4]
new_list2 = map(lambda x, y: x + y, list1, list2)
print(list(new_list2))
'''
list1如果与list2元素个数不匹配
list1 = [11, 22, 33, 44]
list2 = [1, 2, 3]
new_list2 = map(lambda x, y: x + y, list1, list2)
结果:[12, 24, 36]
'''
# 筛选函数filter
'''
用于对序列中的元素进行筛选
map()与filter()是python的内置函数
reduce()在python2中是内置函数,在python3中移到了functools模块中,使用时需要导入
'''
new_list3 = filter(lambda x: x > 22, list1)
print(list(new_list3))

# 累计函数reduce
'''
用于对序列内所有元素进行累计操作
'''
from functools import reduce
new_list4 = reduce(lambda x, y: x + y, old_list)
print(new_list4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值