Python语言精要---上
def isiterable(obj):
try:
iter(obj)
return True
except TypeError:
return False
print(isiterable('a string'))
print(isiterable([1,2,3]))
print(isiterable(5))
#检查对象是不是列表或者数组,要是不是的话,就转换成list
x=1,2,3
print(x)
if not isinstance(x, list) and isiterable(x):
x = list(x)
print(x)
[1, 2, 3]
a=[1,2,3,4]
b = a
print(a is b) #这是创建的引用,是指向同一个对象,所以是True
c = list(a) #会创建新的列,所以a与c不指向相同的列
print(a is not c)
print(a ==c) #但是a与c的内容完全相同
a = None
print(a is None)#这是True的因为,None的实例只有一个
a=b=c=5
d=a+b*c
print(d)
a_list = ['foo',1,[12,34]]
a_list[2] = (5,6)
print(a_list) #['foo', 1, (5, 6)]
a_tuple = (1,2,3,(4,5))
a_tuple[1] = 'four' #TypeError: 'tuple' object does not support item assignment
None | 是Python中的null,这个对象只存在一个实例对象 |
str | 字符串 |
unicode | Unicode字符串 |
float | 双精度浮点数 |
bool | True或者False |
int | 有符号整数,最大值由平台决定 |
long | 任意精度有符号整数,大的int会自动转换为long |
cval = 1+2j
print(cval*(1-2j)) #(5+0j)
a = 'first way to define string'
b = "second way to define string"
c = """
thid way to
define a string
"""
print(a)
print(b)
print(c)
'''
first way to define string
second way to define string
thid way to
define a string
'''
a = "this is an immutable object"
print(a[11])
#a[10] = "f" #TypeError: 'str' object does not support item assignment
b = a.replace('object', "string object")
print(b)
'''
i
this is an immutable string object
a = 5.6
s = str(a)
print(s)
s = 'Python Spark'
s_new = list(s)
print(s_new)
print(s[:3])
print(s_new[:3])
s1 = '12\\34'
print(s1)
s2 = r'this\is \no\sprcial characters \n'
print(s2)
print(s1+s2)
'''
5.6
['P', 'y', 't', 'h', 'o', 'n', ' ', 'S', 'p', 'a', 'r', 'k']
Pyt
['P', 'y', 't']
12\34
this\is \no\sprcial characters \n
12\34this\is \no\sprcial characters \n
def add_and_maybe_multiply(a,b,c=None):
result = a+b
if c is not None:
result = result * c
return result
from datetime import datetime,date,time
dt = datetime(2016,8,24,19,22,33)
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
print(dt.date())
print(dt.time())
print(dt.strftime('%m/%d/%Y %H:%M:%S'))
dt_new = dt.replace(minute = 13, second = 23)
print(dt_new)
dt_sub = dt - dt_new
print(dt_sub)
print(type(dt_sub))
dt_recover = dt + dt_sub
print(dt_recover)
print(type(dt_recover))
'''
2016
8
24
19
22
33
2016-08-24
19:22:33
08/24/2016 19:22:33
2016-08-24 19:13:23
0:09:10
<class 'datetime.timedelta'>
2016-08-24 19:31:43
<class 'datetime.datetime'>
'''
a = 1; b = 7;
c = 8; d = 4;
if(a <b or c > d):
print("Made it")
seq = [1,2,None,4,None,6]
total = 0
for value in seq:
if value is None:
continue
total += value
f = open(path,'w')
try:
write_to_file(f)
except (TypeError,ValueError):
print('Failed')
else:
print("Successed")
finally:
f.close()
print(range(10))
print(range(0,20,2))
seq = [1,2,3,4]
for i in range(len(seq)):
print(seq[i])
x = 5
print('Non-negative' if x >=0 else 'negative')
tuple = 4,5,6
print(tuple)
nested_tuple = (4,5,6),(7,8)
print(nested_tuple) #((4, 5, 6), (7, 8))
print(nested_tuple[0]) #(4,5,6)
print(nested_tuple[0][2])#6
tup = tuple + nested_tuple
print(tup) #(4, 5, 6, (4, 5, 6), (7, 8))
print(tup*2) #(4, 5, 6, (4, 5, 6), (7, 8), 4, 5, 6, (4, 5, 6), (7, 8))
#这里元素不可变,一旦创建每个槽的元素不能再修改了。上面的加倍其实只是对象的引用加倍,本身不会被复制
tuple = (1,2,(3,4))
a,b,c = tuple
print(a)
print(c)
d,e,(f,g) = tuple
print(f)
print(g)
'''
1
(3, 4)
3
4
'''
tuple = (1,2,2,2,2,5,6,7,8)
print(tuple.count(2))
a_list = [2,3,5,7,None]
print(a_list)
tuple = ('jason','peggy','thea')
b_list = list(tuple)
print(b_list)
b_list[2] = "cathy"
print(b_list)
'''
[2, 3, 5, 7, None]
['jason', 'peggy', 'thea']
['jason', 'peggy', 'cathy']
'''
b_list.append(a_list)
print(b_list)
b_list.insert(3, 'thea')
print(b_list)
print(b_list.pop(4))
print(b_list)
b_list.append("thea")
print(b_list)
b_list.append("peggy")
print(b_list)
b_list.remove("peggy") #按照值的移除,移除掉第一个出现的位置
print(b_list)
print('peggy' in b_list)
'''
['jason', 'peggy', 'cathy', [2, 3, 5, 7, None]]
['jason', 'peggy', 'cathy', 'thea', [2, 3, 5, 7, None]]
[2, 3, 5, 7, None]
['jason', 'peggy', 'cathy', 'thea']
['jason', 'peggy', 'cathy', 'thea', 'thea']
['jason', 'peggy', 'cathy', 'thea', 'thea', 'peggy']
['jason', 'cathy', 'thea', 'thea', 'peggy']
True
'''
print(a_list)
print(b_list)
c_list = a_list+b_list
print(c_list)
d_list = c_list.extend([7,8])
print(d_list)
#extend耗费的资源更小,因为+是创建新的list将原来的拷贝过去,而extend 只是添加到现有列表
everything = []
for chunk in list_of_lists:
everything.extend(chunk)
everything =[]
for chunk in list_of_lists:
everything = everything = chunk
a = [6,3,2,6,7,2,8,9,3,2]
print(a.sort(key=None, reverse=False))
b = ['charles','jason','peggy','thea']
print(b.sort(key=len, reverse=False))
import bisect
c = [1,2,3,4,5,6,8,9]
print(bisect.bisect(c,7))
bisect.insort(c,7)
print(c)
'''
6
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'''
seq = [4,6,2,6,889,2,57,2,1,57,223]
print(seq[1:5])
seq[1:2] =[99,99]
print(seq)
print(seq[:5])
print(seq[3:])
print(seq[-4:])
print(seq[-6:-2])
print(seq[::2]) #每两个取一个
print(seq[::-1]) #反序
'''
[6, 2, 6, 889]
[4, 99, 99, 2, 6, 889, 2, 57, 2, 1, 57, 223]
[4, 99, 99, 2, 6]
[2, 6, 889, 2, 57, 2, 1, 57, 223]
[2, 1, 57, 223]
[2, 57, 2, 1]
[4, 99, 6, 2, 2, 57]
[223, 57, 1, 2, 57, 2, 889, 6, 2, 99, 99, 4]
'''
some_list = ['charles','peggy','jason']
mapping = dict((v,i) for i,v in enumerate(some_list))
print(mapping)
print(sorted(zip(mapping.keys(),mapping.values()))) #反转排序
print(sorted(zip(mapping.values(),mapping.keys()))) #反转排序
print(sorted([7,2,4,76,9,3,1])) #排序
print(sorted('hello world')) #排序
print(sorted(set('hello world'))) #返回唯一元素组成的列表
'''
{'charles': 0, 'jason': 2, 'peggy': 1}
[('charles', 0), ('jason', 2), ('peggy', 1)]
[(0, 'charles'), (1, 'peggy'), (2, 'jason')]
[1, 2, 3, 4, 7, 9, 76]
[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
[' ', 'd', 'e', 'h', 'l', 'o', 'r', 'w']
'''
print("\n")
seq_1 = ['charles','jason','peggy','thea']
seq_2 = ['one','two','three','four']
seq_3 = ['first','second']
print(sorted(zip(seq_1,seq_2)))
print(sorted(zip(seq_1,seq_2,seq_3))) #按照最短的序列决定
#enumerate和zip结合使用,迭代多个序列
for i, (a,b) in enumerate(zip(seq_1,seq_2)):
print("%d: %s, %s" % (i,a,b))
#对于已经要压缩好的数据,可以用*解压缩
zipped = zip(seq_1,seq_2)
name, seq = zip(*zipped)
print(name)
print(seq)
#*相当于zip(seq[0],seq[1],...,seq[len(seq)-1])
print(list(reversed(range(10))))
'''
[('charles', 'one'), ('jason', 'two'), ('peggy', 'three'), ('thea', 'four')]
[('charles', 'one', 'first'), ('jason', 'two', 'second')]
0: charles, one
1: jason, two
2: peggy, three
3: thea, four
('charles', 'jason', 'peggy', 'thea')
('one', 'two', 'three', 'four')
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
'''
empty_dict = {}
print(empty_dict)
#创建非空字典
d_1 = {'a':'hello world','b':[1,2,3,4]}
print(d_1)
#插入元素
d_1[7] = 'insert an integer'
print(d_1)
print(d_1['b'])#按照key取值
print('b' in d_1)#判断key是否在映射中
#q取出两个列表
print(d_1.keys())
print(d_1.values())
#删除刚才插入的元素
del d_1[7]
print(d_1)
#弹出一个key对应的东西,返回值是弹出的value
ret = d_1.pop('b')
print(ret)
print(d_1)
#刷新字典
d_1.update({'b':'fresh','a':'change that'})
print(d_1)
'''
{}
{'b': [1, 2, 3, 4], 'a': 'hello world'}
{'b': [1, 2, 3, 4], 'a': 'hello world', 7: 'insert an integer'}
[1, 2, 3, 4]
True
dict_keys(['b', 'a', 7])
dict_values([[1, 2, 3, 4], 'hello world', 'insert an integer'])
{'b': [1, 2, 3, 4], 'a': 'hello world'}
[1, 2, 3, 4]
{'a': 'hello world'}
{'b': 'fresh', 'a': 'change that'}
'''
mapping = dict(zip(range(5),reversed(range(5))))
print(mapping)
#{0: 4, 1: 3, 2: 2, 3: 1, 4: 0}
print("\n")
#get方法可以类似一个if-else循环
value = mapping.get(1,None)
print(value)
no_value = mapping.get(5,"nothing here")
print(no_value)
names = ['charles','apple','thea','jason']
by_latter = {}
for name in names:
letter = name[0]
if letter not in by_latter:
by_latter[letter] = [name]
else:
by_latter[letter].append(name)
print(by_latter)
#上面的这个模块也可以用setdefault代替
by_latter_new = {}
for name in names:
letter = name[0]
by_latter_new.setdefault(letter,[]).append(name)
print(by_latter_new)
#collections模块有一个叫做defaultdict的类,可以使得这个过程更加简单
from collections import defaultdict
by_letter_fresh = defaultdict(list)
for name in names:
by_letter_fresh[name[0]].append(name)
print(by_letter_fresh)
'''
3
nothing here
{'c': ['charles'], 't': ['thea'], 'j': ['jason'], 'a': ['apple']}
{'c': ['charles'], 't': ['thea'], 'j': ['jason'], 'a': ['apple']}
defaultdict(<class 'list'>, {'c': ['charles'], 't': ['thea'], 'j': ['jason'], 'a': ['apple']})
'''
print('\n')
print(hash('string'))
print(hash((1,2,(3,4))))
#print(hash((1,2,[3,4])))#这里会失败,因为列表是可变的
#要想使用列表做键,最简单的放哪个是就是转换成元组
d = {}
d[tuple([1,2,3])] = 5
print(d)
'''
-5979933153692547881
-2725224101759650258
{(1, 2, 3): 5}
'''
a_set = set([2,3,4,5,6,8,9,43])
print(a_set)
b_set = {2,3,5,7,89,5,3,1,3,5,6}
print(b_set)
print( a_set | b_set)#并集
print( a_set & b_set)#交集
print( a_set - b_set)#差集
print( a_set ^ b_set)#异或
c_set = {2,3,4}
print(c_set.issubset(a_set))#c是a的子集不是b的子集
print(c_set.issubset(b_set))
print(a_set == b_set)#内容相同就相等
a.add(x) | 元素x加入到集合a中 |
a.remove(x) | 元素x从集合a中删除 |
a.union(b) | 求合集 |
a.intersection(b) | 求并集 |
a.difference(b) | a-b差集 |
a.symmetric_difference(b) | 异或集合 |
a.issubset(b) | a是b的子集,为True |
a.issuperset(b) | b是a的子集,为True |
a.isdisjoint(b) | 没有公共元素,为True |
列表,集合以及字典的推导式:
names = ['thea','jason','apple','charles','heater','white']
print([x.upper() for x in names if len(x) > 4])
print("\n")
names = ['thea','jason','apple','charles','heater','white']
print([x.upper() for x in names if len(x) > 4])
unique_set = {len(x) for x in names}
print(unique_set)
unique_dict = {val:index for index,val in enumerate(names)}
print(unique_dict)
unique_dict_new = dict((val,idx) for idx,val in enumerate(names))
print(unique_dict_new)
'''
['JASON', 'APPLE', 'CHARLES', 'HEATER', 'WHITE']
{4, 5, 6, 7}
{'heater': 4, 'white': 5, 'apple': 2, 'thea': 0, 'jason': 1, 'charles': 3}
{'heater': 4, 'white': 5, 'apple': 2, 'thea': 0, 'jason': 1, 'charles': 3}
'''
print("\n")
#下面是一个列表的列表
name_name = [
['tom','jason','charles','lilei','shown','joe'],
['natasha','thea','ana','eva','peggy','heather']
]
#想要找到含有两个a的名字放到新的一个列表中
name = [name for names in name_name for name in names if name.count('a')>=2]
print(name)
#为了更清除这种嵌套,下面是一个例子
some_tuples = [(1,2,3),(4,5,6),(7,8,9)]
flattered = [x for tup in some_tuples for x in tup]
print(flattered)
'''
['natasha', 'ana']
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'''
flat = []
for tup in some_tuples:
for x in tup:
flat.append(x)
print(flat)
转载于:https://www.cnblogs.com/kongchung/p/5805133.html
Python语言精要---上相关推荐
- Python语言快速入门上
目录 1.前言 2.变量和常量 1)Python对象模型 2)Python变量 二.运算符和表达式 [运算符和表达式] [位运算符] [逻辑运算符] [成员运算符] [身份运算符] [常用内置函数] ...
- python语言在命名上是什么敏感的_一文轻松掌握python语言命名规范规则
和C/C++.Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而 ...
- py基础系列(二):python语言基础(上)
py 基本数据类型 整型 浮点型 复数型(complex) 逻辑型(布尔型) 字符串 字符串的表示 转义字符 字符串的格式化 变量 关键字和标识符 变量 运算符与表达式 运算符 (1)算数运算符 (2 ...
- python能在工程上干嘛-python能干什么?
Python的五个发展方向如下: 做了JAVA开发十年,也做过大大小小的项目,最近一两年做开发的被一门编程语言,也就是Python给刷屏了,在各个论坛中,关注圈中,Python的关注量一直都是很高,今 ...
- android 开发 python_用python语言开发android应用程序(1) - 格物致知的博客空间 - 中国移动开发者社区 - Powered by X-Space...
对于不熟悉Java语言,又想进入android开发领域的人来说,似乎有两个选择,一个是重新开始学习Java语言,然后开始学习android开发,一个就是到处求方问药:在android上可不使用XXX语 ...
- Python语言快速入门(下)
前言 本图文是本期图文的下篇,可能篇幅较长大概有10000多字,很高兴您能阅读,也感谢您的关注支持!这期下篇主要还是接着上次的内容继续,在上篇中我介绍了关于Python环境的安装.基本数据处理.输入输 ...
- python语言type board_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题……...
针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...
- python线上编辑问题_大型线上项目中动态语言诸多问题之二 -- 以 Python 语言为例...
第一个问题:Mutable对象被误改 这个是在线上环境出现过的一个BUG 事后说起来很简单,服务端数据(放在dict里面的)被意外修改了,但查证的时候也花了许多时间,伪代码如下: def routin ...
- android 使用perl语言,在Android上用python(Perl、Lua、BeanShell等)编程
原文来自:http://imxingzhi.appspot.com/?p=110001python 偶然间发现了google code上的一个项目--android-scriptingandroid ...
最新文章
- java和python哪个好学-Java VS Python 应该先学哪个?
- openCV笔记(持续更新)
- 常见索引结构—二叉搜索树
- 《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch
- 对抗焦虑症(恐惧症)研究
- C++ 写时拷贝 3
- python 行为驱动_什么是行为驱动的Python?
- 解决conda activate报错IMPORTANT: You may need to close and restart your shell after running ‘conda init‘
- linux的qt5.5,Qt 5.5 正式发布,完全支持 Windows 10
- 写不出满分作文怎么办,GPT-3 来帮你
- 苹果官网下架 iPhone 8 全系;阿里推出“阿里云会议”;深度操作系统 20 BETA 发布 | 极客头条...
- 集群启动/停止方式总结
- swift菜鸟入门视频教程-02-基本运算符
- 【持久层】Druid简介
- 数字图像处理:名词解释
- ns手柄pc驱动_功能特点可以打满屏!北通宙斯白金版无线游戏手柄体验
- [工具使用]黑暗引擎FOFA
- django相关报错知识整理
- suger BI 创建任务
- 谁是白盒网络市场最大玩家
热门文章
- Hibernate搭建成功!(源码)
- tidevice安装(MacOS)
- mysql 二十条记录_记 MySQL优化 20条
- 多线程 python tcp 图片_Python第四周之网络编程TCP (服务器/客户端; 线程下载图片;线程版服务器和客户端(单人、多人)) UDP...
- Failed to resolve:com.android.support:appcompat-v7
- Wireshark网络分析实例集锦第2章设置Wireshark视图
- grub rescue 安装linux,Ubuntu重装启动失败进入修复grub rescue模式
- php 生成等比例缩略图,PHP等比例生成缩略图
- python安装cv2模块_pythonimportcv2importError:DLLloadfailed:找不到指定模块
- python3基本知识_Python3 - 基础知识、基本了解