python基础之八:知识小结及补充
一、python2 与python3 的区别
1、在2中print后可带扣号,也可不带,3中必须带,否则报错!
#print 'hello python2'
print('hello python3')
2、在2中有xrange()生成器,也有range(),而3中只有range()
for i in range(1, 10, 2):
print(i)
3、python2中,raw_input()把输入的都当作字符串,而input()输入什么类型就是什么类型-->int类型的时候最好用input()
python3将raw_input和input进行整合成了input....去除了raw_input()函数....其接受任意输入, 将所有输入默认为字符串处理,
并返回字符串类型
input('python3 输入的任何字符都会被视为字符串!')
二、“=”,“==”与“is”的区别 id(内容) ->查看内容的内存地址
“=” 赋值
“==”比较值是否相等
“is”比较的是内存地址是否相同
li1 = [1, 2, 3]
li2 = li1
print(li1 == li2)
print(li1 is li2)
print(id(li1), id(li2))
三、python中的小数据池 (为节约空间,将小段数据只保存一份在内存中)
只有字符串、数字在该池中;
数字的范围是:-5 -- 256 在池中
字符串:1)不能含特殊字符
2)S*20 还是同一内存地址,S*21以后就是两个内存地址了(S表示单个英文字符) --> 实际测试不准,如100个a,内存地址却相同
s1 = 'abcd中'
s2 = 'abcd中'
print(id(s1), id(s2)) # 此环境下是相同的,windows命令行下是False n1, n2 = 6, 6
print(n1 is n2)
n3, n4 = 300, 300
print(n3 is n4) # 在此环境下是True,在window10 命令行下如此写也是True
n5 = 300
n6 = 300
print(n5 is n6) # 在此环境下是True,在window10 命令行下如此却是False
其他数据类型如:list、dict、tuple、set不包含在小数据池中
tu1 = ("", 2)
tu2 = ("", 2)
print(tu1 is tu2) # 输出False
四、基本数据类型知识小结
到目前为止,接触到的基本数据类型有:
int、str、list、bool、tuple、dict、bytes
1、int
# int.bit_length()
# int.to_bytes()
# int.from_bytes()
# int.mro() # 2、str
#str.isspace() # 3、list
'''
补充一个循环列表,删除元素时越界的问题:在列表循环过程中删除列表中的元素(避免)
'''
# 越界的示例:删除过程中,列表在改变
# for i in range(len(li)):
# if(i%2 == 1):
# li.pop(i) li = [11, 22, 33, 44, 55] # 需求,循环上述列表li,删除奇数数位的值
# 普通方法
li_odds = li[1::2]
for i in li_odds:
li.remove(i)
print(li)
# 高级方法
for i in range(len(li)-1, -1, -1): # range(start, stop[, step]) 即顾头不顾尾:从4开始到-1,即4,3,2,1,0,步长是-1,因为是倒着数
print(i)
if i % 2 == 1:
del(li[i])
print(li) for i in range(5, 0, -1): # 倒数5到0,没有0,所以是:5,4,3,2,1
print(i) # 4、bool
# 转化成bool值
# 各种可转换成False的 : 0 '' [] () {} set()
print(bool(0), bool(''), bool([]), bool(()), bool({}), bool(set())) # 5、tuple 元祖
tu1 = (1) # 如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。
tu2 = (1,)
print(type(tu1), type(tu2)) # 打印结果:<class 'int'> <class 'tuple'> tu3 = ([1])
tu4 = ([1],)
print(type(tu3), type(tu4)) # 打印结果:<class 'list'> <class 'tuple'> l1 = []
l2 = l1
l3 = l1
l3.append('a')
print(l1, l2, l3) # ['a'] ['a'] ['a'] dic1 = dict.fromkeys([1, 2, 3], 4)
print(dic1) # 结果是:{1: 4, 2: 4, 3: 4}
print(dic1[1]) # 结果肯定是4 # 6、dict dic = dict.fromkeys([1, 2, 3], '春哥')
print(dic)
dic = dict.fromkeys([1, 2, 3], [])
print(dic) # {1: [], 2: [], 3: []}
dic[1].append('袁姐')
print(dic) # {1: ['袁姐'], 2: ['袁姐'], 3: ['袁姐']}
dic[2].extend('二哥') # extend用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
print(dic) # {1: ['袁姐', '二', '哥'], 2: ['袁姐', '二', '哥'], 3: ['袁姐', '二', '哥']} dic2 = dict.fromkeys([1, 2, 3], [1])
dic2[1].append('东西') # 添加到一个value列表,结果都添加了
print(dic2) # # # # 删除keys中不包含k字母的字典元素#############
# # 原则是,集合在循环中不能删除自己的元素,即集合自带的删除方法不要使用,用系统给的del()
# 方法一:
dic4 = {'k1': 'v1', 'k2': 'v2', 'a3': 'v3'}
dic5 = {} for i in dic4:
if 'k' not in i: # 字符串的成员运算符 - 如果字符串中不包含给定的字符返回 True
dic5.setdefault(i, dic4[i])
# 完成上述循环后,dic5 = {'a3': 'v3'}
dic4 = dic5 # 将dic5的值赋给dic4,覆盖原来的值
print(dic4) # {'a3': 'v3'} # 方法二:
li_tmp = []
for j in dic4:
if 'k' not in i:
li_tmp.append(j)
for k in range(len(li_tmp) - 1, -1, -1):
del(dic4[k])
print(dic4) # 简化版本
l = []
for i in dic4:
if 'k' in i:
l.append(i)
for i in l:
del dic4[i]
print(dic4)
python基础之八:知识小结及补充的更多相关文章
- 一、python基础相关知识体系
python基础 a. Python(解释型语言.弱类型语言)和其他语言的区别? 一.编译型语言:一次性,将全部的程序编译成二进制文件,然后在运行.(c,c++ ,go) 运行速度快.开发效率低 二. ...
- html5-基本知识小结及补充
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- python基础之知识补充-作用域、特殊语法
python作用域 无函数的作用域 在python中没有块级作用域 什么叫块级作用域呢?先来看个例子: if 1 == 1: name= 'alex' print(name) 运行结果为alex 在j ...
- 第一阶段——CentOS6_Python3.6.1笔记(尚学堂-Python基础快速入门)+ 【补充】麦子-Python程序入门与进阶
虚拟机环境: 设置网络 .修改网络地址 .设置网卡为nat模式 .确保物理机启动dhcp.net服务 .编辑文件:vim /etc/sysconfig/network-scripts/ifcfg-et ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- python基础之字典、赋值补充
字典常用操作: 存/取info_dic={'name':'egon','age':18,'sex':'male'} print(info_dic['name11111111']) print(info ...
- python基础小知识,is和==的区别,编码和解码
1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...
- Python基础-语法知识
——编程语言的发展史 机器语言 优点:执行速度够快 缺点:开发效率非常低 汇编语言 优点:执行效率相较于机器语言略低 缺点:开发效率相较于机器语言略高 高级语言 C.C++.C#.java.PHP.p ...
- 10个Python基础练习项目,你可能不会想到练手教程还这么有趣
美国20世纪最重要的实用主义哲学家约翰·杜威提出一个学习方法,叫做:Learning By Doing,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...
随机推荐
- CodeChef MAXDTREE(DP套DP)
题意 链接:https://www.codechef.com/problems/MAXDTREE 给定一个 \(n\) 个节点的树,其中 \(1\) 为根节点,每个点有点权,我们定义" ...
- Docker 创建、运行、查看、删除容器
Docker 创建.运行.查看.删除容器 Step 1: 查看docker程序是否存在, 功能是否正常. sudo docker info 若不正常请参考下文: Docker安装和程序创建 Step ...
- Laravel服务容器的绑定与解析
本篇文章给大家带来的内容是关于Laravel服务容器的绑定与解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 老实说,第一次老大让我看laravel框架手册的那天早上,我 ...
- luogu P3853 [TJOI2007]路标设置 |二分
题目背景 B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离.为了便于研究这个问题,我们把公路上相邻路标的最大距离定 ...
- SpringCloud入门概述
SpringCloud入门概述 Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)注意:Spring Boot ...
- MonkeyDev安装--逆向开发
MonkeyDev是原有iOS OpenDev的升级,非越狱插件的开发集成神器! 可以使用Xcode开发CaptainHook Tweak.Logos Tweak 和 Command-line Too ...
- 聊聊Lambda架构
定义 在数据分析场景中,我们可能会遇到这样的问题.例如,我们要做一个推荐系统,如果我们用批处理任务去做,一天或者一小时的推荐频次明显延迟太大.如果用流处理任务,虽然延迟的问题解决了,然而只用实时数据而 ...
- Application类-多窗口交互
我们在派生自Application类中出来放置响应应用程序事件的代码外,还可以放置一些完成其他任务的代码. 在此之前要知道: 如何获取应用程序的Application对象: //App是一个继承自Ap ...
- C#配置文件configSections详解
一.问题需求: 在项目中经常遇到需要写配置文件地方,目的就是不想在程序中关于一些信息写死,发布的时候只需要修改一下配置文件就可以,不需要每次都修改程序,如项目名称.数据库连接字符串.IP端口之类 的: ...
- localdb启动
前提:vs自带localdb,不用另外装.其次,vs里的的“sql server 对象资源管理器”(在视图里)可以常规管理它.相比之下,SSMS更专业(推荐),按情况选用. 正文: 安装完毕后…… C ...