python 笔记(一)——基本语法

# -*- coding: utf-8 -*-

1.Python创建list

L = ['Michael', 100, True]
print L[0]#按照索引访问list
print L[-1]#倒序访问list
L.append('Paul') #追加到 list 的末尾
L.insert(0, 'Paul')
L.pop() #删掉list的最后一个元素
L.pop(2) #删掉索引是2的元素
L[2] = 'Paul'#替换元素

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


条件过滤
列表生成式的 for 循环后面还可以加上 if 判断
>>> [x * x for x in range(1, 11) if x % 2 == 0]

对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
利用 3 层for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121。
print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]

2.创建单元素tuple

 

t = (1,) 单元素 tuple 要多加一个逗号“,”,这样就避免了歧义

#“可变”的tuple
t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'

3.Python之 for循环

L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print (name)

for x in ['A', 'B', 'C']:
    for y in ['1', '2', '3']:
        print (x + y)

4.Python之什么是dict(key不能重复,无序)

名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

访问dict

print d['Adam']

#法1:先判断一下 key 是否存在,用 in 操作符:

if 'Paul' in d:
    print (d['Paul'])
法2:print (d.get('Bart'))

更新dict

d['Paul'] = 72

遍历dict

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
...     print (key)
... 
Lisa
Adam
Bart

5.Python中什么是set

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict key很像。

s = set(['A', 'B', 'C'])

访问set

set存储的是无序集合,所以我们没法通过索引来访问,判断一个元素是否在set中

s = set(['adam','bart'])
print ('adam' in s)
print ('bart' in s)
True
True


months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov'])
x1 = 'Feb'
x2 = 'Sun'

if x1 in months:
    print ('x1: ok')
else:
    print ('x1: error')

if x2 in months:
    print ('x2: ok')
else:
    print ('x2: error')

遍历set

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
    print (x[0]+':',x[1])

更新set

添加元素时,用set的add()方法

删除set中的元素时,用set的remove()方法
s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
    if name in s:
        s.remove(name)
    else:
        s.add(name)
print (s)

6.Python之调用函数

sum()函数接受一个list作为参数,并返回list所有元素之和

L = []
x = 1
while x <= 100:
    L.append(x * x)
    x = x + 1
print sum(L)

7.编写函数

       定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

def square_of_sum(L):
    sum = 0
    for x in L:
        sum = sum + x * x
    return sum

print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])

函数之返回多值(Python的函数返回多值其实就是返回一个tuple,但写起来更方便。)

import math

def quadratic_equation(a, b, c):
    t=math.sqrt(b*b-4*a*c)
    return (-b+t)/(2*a),(-b-t)/(2*a)

print (quadratic_equation(2, 3, 0))
print (quadratic_equation(1, -6, 5))

递归函数(如果一个函数在内部调用自身本身,这个函数就是递归函数。)

汉诺塔
def move(n, a, b, c):
    if n ==1:
        print (a, '-->', c)
        return
    move(n-1, a, c, b)
    print (a, '-->', c)
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')

定义默认参数(默认参数只能定义在必需参数的后面:)

定义默认参数(默认参数只能定义在必需参数的后面:)
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
这样一来,计算平方就不需要传入两个参数了:
>>> power(5)
25

定义可变参数

Python解释器会把传入的一组参数组装成一个tuple传递给可变参数

如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:
def fn(*args):
    print (args)
编写接受可变参数的 average() 函数。
def average(*args):
    sum=0.0
    if len(args) == 0:
        return sum
    for x in args:
        sum = sum + x
    return sum / len(args)

print (average())
print (average(1, 2))
print (average(1, 2, 2, 3, 4))

8.对list进行切片

 

(1)L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

(2)如果第一个索引是0,还可以省略:>>> L[:3]

(3)只用一个 : ,表示从头到尾:L[:]

(4)切片操作还可以指定第三个参数:L[::2],第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

range()函数可以创建一个数列:

>>> range(1, 101)
[1, 2, 3, ..., 100]

请利用切片,取出:

1. 前10个数;
2. 3的倍数;
3. 不大于50的5的倍数。

L = range(1, 101)
print (L[:10])
print (L[2::3])
print (L[4:50:5])

对list进行切片

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L[-2:]
['Bart', 'Paul']
>>> L[:-2]
['Adam', 'Lisa']
>>> L[-3:-1]
['Lisa', 'Bart']
>>> L[-4:-1:2]
['Adam', 'Bart']

对字符串切片

def firstCharUpper(s):
    return s[0].upper() + s[1:]
print (firstCharUpper('hello'))
print (firstCharUpper('sunday'))
print (firstCharUpper('september'))

9 索引

布尔索引
ix=day<tau_samples        (1)
expected_texts_per_ day[day]= (lambda_1_samples[ix].sum()+lambda_2_samples[~ix].sum())/N  (2)
[ix]是满足(1)式的条件的索引,[~x]则是取反

10 线程

import threading
import time


class Job(threading.Thread):

    def __init__(self, *args, **kwargs):
        super(Job, self).__init__(*args, **kwargs)
        self.__flag = threading.Event()     # 用于暂停线程的标识
        self.__flag.set()       # 设置为True
        self.__running = threading.Event()      # 用于停止线程的标识
        self.__running.set()      # 将running设置为True

    def run(self):
        while self.__running.isSet():
            self.__flag.wait()      # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回
            print(time.time())
            time.sleep(1)

    def pause(self):
        self.__flag.clear()     # 设置为False, 让线程阻塞

    def resume(self):
        self.__flag.set()    # 设置为True, 让线程停止阻塞

    def stop(self):
        self.__flag.set()       # 将线程从暂停状态恢复, 如何已经暂停的话
        self.__running.clear() 
        

a=Job()
a.start()

time.sleep(5)
a.pause()

time.sleep(3)
a.resume()
time.sleep(3)
a.pause()
time.sleep(2)
a.stop()

11.Zip函数

12.特殊函数__call__

__call__
在Python中,函数其实是一个对象:

>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)
123
由于 f 可以被调用,所以,f 被称为可调用对象。

所有的函数都是可调用对象。

一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。

我们把 Person 类变成一个可调用对象:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def __call__(self, friend):
        print 'My name is %s...' % self.name
        print 'My friend is %s...' % friend
现在可以对 Person 实例直接调用:

>>> p = Person('Bob', 'male')
>>> p('Tim')
My name is Bob...
My friend is Tim...
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

13.sql in语句的参数输入

3.1编好的的int类型
meter_binding_id=meter_binding_id[0].values.tolist()#获取绑定设备id
ids=meter_binding_id[0][:-1]#去除最后的‘,’
meters=ms.ExecQuery("select meter_no from pro_meter WHERE id in ({})".format(ids))   
3.2当in函数需要输入多个字符时
arg_list = ','.join(['%s'] * len(meter))#根据meter的长度产生多少个占位符
cc="select insetTime ,sum(n_value) as 'value' from pro_statistics_hours WHERE meter_no IN (%s) GROUP BY insetTime ORDER BY insetTime asc"%arg_list#组成sql语句
import pymssql
conn=pymssql.connect(host,user,pwd,db)
cur=conn.cursor()
meter=tuple(meter)#将list转为tuple类型
cur.execute(cc,meter)
resList=cur.fetchall()#获取数据库查询结果
resList=pd.DataFrame(resList)#转为dataframe
conn.close()

14.python中type dtype astype 的用法

1.type 获取数据类型

2.dtype 数组元素的类型

3.astype 修改数据类型

 

https://images2017.cnblogs.com/blog/1256253/201712/1256253-20171216095302277-1322473693.jpg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值