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,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...
随机推荐
- 结合Spring实现策略模式
最近系统需要对不同维度的数据进行差异化计算,也就会使用不同算法.为了以后更加容易扩展,结合Spring框架及策略模式对实现架构做了系统设计. 1. 定义策略接口(Strategy): import c ...
- logstash output时区差8个小时
logstash版本6.3.2,解决方式如下,不需要修改源码: input { redis { host => "127.0.0.1" port => " p ...
- (三)golang--执行流程分析
XXX.go--go build XXX.go--XXX.exe XXX.go--go run XXX.go 两种方式的区别:(1)如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没g ...
- springboot mybatis使注解和xml两种方式同时生效
声明:该博客参考了:https://www.jianshu.com/p/53762ac6d31c 如果上面这个博客中的内容已经解决了你的问题,那就不用往下看了,如何按照上面的配置一直报这个异常: or ...
- Laravel服务容器的绑定与解析
本篇文章给大家带来的内容是关于Laravel服务容器的绑定与解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 老实说,第一次老大让我看laravel框架手册的那天早上,我 ...
- flutter-初识(基础语法)
前言:笔者学过 java,刚刚接触 flutter,记录下基本的一些语法. 一.认识Flutter Flutter 是 google 推出的,使用的 Dart 语言,它可以跨平台实现 Android ...
- json工具类(三)——net包
package com.ruoyi.common.utils.json; import java.util.List; import java.util.Map; import net.sf.json ...
- 『Pushbox 点双联通分量』
Pushbox Description 周婧涵和她的小伙伴们发明了一个新游戏.游戏名字很准确,但不是特别有 创意.她们称之为"推动箱子在谷仓周围找到正确的位置,不要移动干草"游戏 ...
- Go语言http包简易入门
说道go语言web编程,必不可少的会使用到net/http包.go语言将web开发需要使用到的很多内容都放在了标准库中——net/http. 如何写一个简单的web程序很容易.如下: package ...
- SqlServer数据库分区分表实例分享(有详细代码和解释)
数据库单表数据量太大可能会导致数据库的查询速度大大下降(感觉都是千万级以上的数据表了),可以采取分区分表将大表分为小表解决(当然这只是其中一种方法),比如数据按月.按年分表,最后可以使用视图将小表重新 ...