一、python的流程控制

         1. if语句   

a=45
if a<0:
    print(1)
elif a>0 and a<=10:
    print(2)
elif a>10 and a<=20:
    print(3)
else:
    print(4)

        打印结果: 4

       使用if...elif..elif..else.. 来进行条件的判断,,执行的条件满足后,只执行满足条件的语句,执行完成后,条件判断结束。相当于Java里的switch()...case..判断。

         2. for循环

# for循环
lists=["cat","dog","window"]
for i in lists:
    print(i,len(i))
# 注意使用链表时,修改链表的节点的时候会出现不安全的问题,此时需要迭代它的副本
for i in lists[:]:
    if len(i)>3:
        print(i)
        lists.insert(0,i)
print(lists)

        打印结果:

cat 3
dog 3
window 6
window
['window', 'cat', 'dog', 'window']

     注意:  在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。使用切割标识就可以很方便的做到这一点。   

      3.range函数

       1) range(Integer) 表示从0开始到指定数的左闭右开区间的所有数集成的一个序列。

   

#range()函数,从0开始
for i in range(5):
    print(i)

     打印结果为:

0
1
2
3
4   

    2)   range(start,end) 表示从start到end的左闭右开区间的所有数集成了一个序列。

#range()函数指定范围是左闭右开区间
for j in range(5,10):
    print(j)

   打印结果为: 

5
6
7
8
9   

   3)  range(start,end,length) 表示从start到end等差为length的所有数集成的一个序列。

 

print("range()函数的第三个参数为步长")
for k in range(10,20,3):
    print(k)

  打印结果为:

10
13
16
19

     4. else在for循环和while循环中的使用

           else可以用在for循环和while循环结束后,如果中间使用了break,那么将不会走else。

lists=[1,2,3,4,5];
for i in lists:
    print(i)
else:
    print("for循环遍历完了!")

a=1;
while a<5:
    a+=1
    print(a)
else:
    print("while条件结束了!")

   打印结果:

1
2
3
4
5
for循环遍历完了!
2
3
4
5
while条件结束了!

    在for循环里,添加一个条件判断如果i==4,那么Break:

lists=[1,2,3,4,5];
for i in lists:
    print(i)
    if(i==4):
        break
else:
    print("for循环遍历完了!")

  打印结果:
1
2
3
4

    5. pass语句的使用

           pass可以在需要添加一些必要语句的使用,比如说需要创建一个类,但是又什么都不做;又比如 pass可以当做函数和结构体的占位符。

           1 ) 创建一个类

            class  MyEmptyClass:

              pass 

          2) 声明一个函数

             def initLog(*args):

               pass 

      6. 函数的定义

           python和其他语言一样支持函数,如,写一个费波纳茨数列的函数。

           使用def关键字定义函数:

# 费波纳茨数列

def flib(n):
    a,b=0,1;
    while(b<n):
        print(b)
        a,b=b,a+b;
flib(100);

 

 

二、python的数据结构

 

列表

       列表的常用方法

  • list.append(x)

       把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]

  • list.extend(L)

        将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L

  • list.insert(ix)

        在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)

  • list.remove(x)

        删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。

  • list.pop([i])

       从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从列表中被删除。

  • list.clear()

        从列表中删除所有元素。相当于 del a[:]

  • list.index(x)

        返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。

  • list.count(x)

        返回 x 在列表中出现的次数。

  • list.sort()

        对列表中的元素就地进行排序。

  • list.reverse()

        就地倒排列表中的元素。

  • list.copy()

        返回列表的一个浅拷贝。等同于 a[:]

##数据结构之列表
lists1=['a','b','c']
#在列表末尾添加一个元素
lists1[len(lists1):]='d'
print("直接使用下标给最后一个元素赋值:",lists1)
lists1.append('e')
print("使用append方法插入:",lists1)
lists1.insert(len(lists1),'f')
print("使用Insert()方法插入:",lists1)

# extend() 将列表新增一个新的列表
list2=[1,2,3]
lists1.extend(list2)
print("扩展一个列表后的集合为:",lists1)

# remove 方法,移除列表中的一个元素,参数为要传的元素,如果元素不存在,那么会报错 X not in list
lists1.remove(1)
print("移除元素后的列表为",lists1)

# pop([i])方法, 移除列表中的指定位置的元素,并返回,如果不指定参数 ,那么将移除最后一个元素。
lists1.pop(0)
print("pop后的集合为:",lists1)
v=lists1.pop()
print("pop最后一个元素后",v,"的集合为:",lists1)


# count(x) 返回x元素在列表中出现的次数
num=lists1.count(2)
print("2出现的次数为:",num)

# sort()对列表的元素进行排序,注: 排序只能对同一种的数据类型进行比较,如果有Int和str,那么调用此方法就会报错。
list3=[6,1,4,7,3,3,1,2,8,1]
list3.sort()
print("排序后的列表为:",list3)

# reverse()方法
list3.reverse()
print("反转后的列表为:",list3)

# copy()方法,是一个浅拷贝,相当于a[:]
list4=list3.copy()
list5=list4[:]
print("拷贝后的列表为:",list4,list5)
# 清空列表相当于 del lists1[:]
#lists1.clear()
del lists1[:]
print("清空列表:",lists1)

 打印结果为:

直接使用下标给最后一个元素赋值: ['a', 'b', 'c', 'd']
使用append方法插入: ['a', 'b', 'c', 'd', 'e']
使用Insert()方法插入: ['a', 'b', 'c', 'd', 'e', 'f']
扩展一个列表后的集合为: ['a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3]
移除元素后的列表为 ['a', 'b', 'c', 'd', 'e', 'f', 2, 3]
pop后的集合为: ['b', 'c', 'd', 'e', 'f', 2, 3]
pop最后一个元素后 3 的集合为: ['b', 'c', 'd', 'e', 'f', 2]
2出现的次数为: 1
排序后的列表为: [1, 1, 1, 2, 3, 3, 4, 6, 7, 8]
反转后的列表为: [8, 7, 6, 4, 3, 3, 2, 1, 1, 1]
拷贝后的列表为: [8, 7, 6, 4, 3, 3, 2, 1, 1, 1] [8, 7, 6, 4, 3, 3, 2, 1, 1, 1]
清空列表: []

      列表的应用

          1. 把列表当做栈来使用(栈的特性: 先进后出,最后进的就最先弹出去)

# 把列表当做栈来使用
stack=[1,3,5,7]
print(stack)
#放入一个元素,使用append(),放在最后面
stack.append(9)
print(stack)
#弹出最后一个元素
stack.pop()
print(stack)

         打印结果:

[1, 3, 5, 7]
[1, 3, 5, 7, 9]
[1, 3, 5, 7]

          2. 把列表当做队列来使用(队列的特性: 先进先出,最先进去的最先出队列)

#把列表当做队列来使用,先进先出的特性,需要实现一个deque,来自Collections包
queue=deque(["apple","bannana","pear"])
print(queue)
#从队列中插入一个元素
queue.append("orange")
print(queue)
#将队列的元素移除一个
queue.popleft()
print(queue)

          3. 列表推导式

       可以直接使用列表推导式来对列表做筛选操作,返回的是一个集合,如下, 筛选出 列表中除了1,6 外的其他元素:

candidates = [1, 2, 4, 3, 6]
# 列表推导式
a = {x for x in candidates if x not in [1, 6]}
print(a)

    打印结果:   {2, 3, 4}

  使用索引和分片修改列表

    1. 使用索引修改列表

         类似于字符串,可以直接使用索引修改列表里的内容,如下:

s=[1,2,3]  ,  s[0]=2

    2. 使用分片修改列表

          分片修改列表其实相当于两个操作,第一步删除分片索引对应的列表内容,第二步将等号右边的值插入到开始到分片的位置。

s=[1,2,3 ] ,s[1:2]=[4,5]

         打印结果为: [1,4,5,3]

 

 

 

   元组和序列

       元组

             元组由一个或作多个元素,通过逗号相连构成。

      基本用法: 

             1. 输入的时候,元组可以不用(),输出的时候元组一般都带有括号。

a=1,2,3,4,5
b=a,123
print(b)

              打印结果:   ((1, 2, 3, 4, 5), 123)

            2.  元组支持切片,可以使用下标来取出对应的值,下标从0开始。

            3.   元组之间可以直接通过"+"进行连接,组成为一个新的元组。

t1 = (1, 2, 3)
t2 = (1, 2)
print(t1 + t2)
print(t1[1])

        打印结果:

(1, 2, 3, 1, 2)
2

        :   需要注意的是,元组不能通过指定的下标来进行赋值,否则会报错: 

TypeError: 'tuple' object does not support item assignment

               a[1]=1

   

python sse实现流式输出_python

     序列

          序列拆封,是指等式右边的任意线性序列与等式左边的元素个数要相等。如果个数不相等,那么会报错,类似下面的:

Traceback (most recent call last):
  File "D:/Study/PythonStudy/Demo02.py", line 7, in <module>
    x,y=t
ValueError: too many values to unpack (expected 2)

           例子:  

t='a','b','c';
x,y,z=t
print(t)
print(x,y,z)

        打印结果:

('a', 'b', 'c')
a b c

   集合

               集合是python常见的一种数据类型,特性是: 集合是一个无序不重复的元素集合,类似于java集合的set。基本功能包括:

       关系测试和消除重复元素

               集合对象还支持,联合(union)、交(intersection)、差(difference)、对称差集(sysmmetric difference)等数学运算。

               创建集合的方式有二种: 

                {} 或者 set()

                :  如果想要创建一个空集合,那么使用set()来创建,不能使用{}, {}用来创建一个空的字典。

# 集合,如果使用set(),那么只能传一个参数,最终输出的结果会根据输入的串进行拆分并且无序
a={1,1,2,3,4,5}
print(a)
b=set("苹果,香蕉,橘子")
print(b)

               打印结果: 

                {1, 2, 3, 4, 5}
                {'蕉', '香', '子', '果', '苹', '橘', ','}

      字典

              字典是python常见的一种数据结构,组成为键值对集合,由1个或多个key:value组成的序列。空字典为: {}


三、模块          

         模块是指python包含或定义的文件,文件名就是:  名.py ,以.py为后缀,模块的模块名可以有一个全局变量_name_得到。

import demo03

print("导入一个模块:",demo03.lists)
##同时会运行导入模块的代码

         注: 1 .模块导入后,执行会先执行导入的模块代码,执行完后,再执行后面的代码。  

               2. 每个模块只会导入一次,如果之前的模块修改的话,需要重新加载进解释器才能够适用修改的模块,这个时候需要调用一个import .reload(modulename)。

四、输入输出

           文件读写

           通过函数open()来返回一个文件对象,然后对文件对象进行操作。

          open(filename,mode);

          mode默认为'r',表示只读, 'w'表示只写,'a'表示在文件追加内容,'r+'表示打开文件进行读取和写入。