if True:
name2=1
print(name2)

  输出:1

  

if False:
name1=1
print(name1)

  报错:

NameError: name 'name1' is not defined

  总结:只要代码执行,放在内存中,后面代码就可以使用。这一点与其它语言不一样。 在python中,一个作用域的范围是指函数的范围。

  

l=[1,2,3]
print(l[3])

  输出:

IndexError: list index out of range

  

  

l=[1,2,3]
print(l[3:80])

  输出:

[]

  总结:列表取索引的之前,索引值不能超过列表索引的最大值。当列表取切片的时候,则不受这个限制,即切边范围随便取。

  join方法

l=['a','b','c']
tag=True
ll=''
for i in l:
if tag: #注意的一点是,当循环一个可迭代对象时,
i=i #如果有一个是特殊的,而其它是一样的,可以利用tag标志位。tag标志位一般在if条件判断中,进入这个if子语句,执行完代码,重新给tag赋值。
tag=False #不管怎么样,感觉好屌的样子,而且效果也很好。
else: #要经常采用。虽然 .join() 方法也能实现。
i='_'+i
ll+=i
print(ll) print('_'.join(l))

  输出:

a_b_c
a_b_c

  

  

  l= [0,1,2,3,4,5,6,7,8,9,10,11],删除列表中索引值为偶数。

l=[0,1,2,3,4,5,6,7,8,9,10,11]
for i in range(len(l)):
if i %2==0:
del l[i]
print(l)

  结果是报错:

IndexError: list assignment index out of range

  因为 for i in range(len(l)),实际上是走了第一遍,遇到len(l)值后就确定了,直到for循环遍历到最大值。

  随着删除一些元素,会影响到列表长度,从而使得索引取值时,容易出现错误。

  方法一:

    复制列表l,保存为列表ll。进行操作,比较low。

  方法二:

    逆向思维。从后往前取索引,删除元素。删掉的索引值越来越小,而且前面可能要删掉的元素的索引值永远是在列表的合法长度以内。666 

l=[0,1,2,3,4,5,6,7,8,9,10,11]
for i in range(len(l)-1,-1,-1):
if i %2==0:
del l[i]
print(l)

  输出:

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

  方法三:

    直接用列表切片步长,简直6翻了,切片很强大,步长也同样厉害。 ---del l [ ],作为单独一个语句,而不是列表 l 的方法

l=[0,1,2,3,4,5,6,7,8,9,10,11]
del l[::2]
print(l)

  输出:

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

    

  

  

  dic=dict(k1=1,k2=2,k3=3,k4=4,m5=5,m6=6,m7=7),删除字典dic中含有k的键值对。
  如果按照以下的方式写:
dic=dict(k1=1,k2=2,k3=3,k4=4,m5=5,m6=6,m7=7)
for i in dic:
if 'k' in i:
del dic[i]
print(dic)

  结果报错:

RuntimeError: dictionary changed size during iteration

  所以,不要在循环字典的过程中,修改字典的大小。

  如果是修改字典的value值,这是允许的。例如:

dic=dict(k1=1,k2=2,k3=3,k4=4,m5=5,m6=6,m7=7)
for i in dic:
if 'k' in i:
dic[i]=666
print(dic)

  输出:

{'k1': 666, 'k2': 666, 'k3': 666, 'k4': 666, 'm5': 5, 'm6': 6, 'm7': 7}

  

  如果想修改字典的大小,只有退而求其次,建立一个空列表,保存需要更好的key值,然后循环这个列表,进行修改value值。这个列表起到了一个中间人的作用。

dic=dict(k1=1,k2=2,k3=3,k4=4,m5=5,m6=6,m7=7)
l=[]
for i in dic:
if 'k' in i:
l.append(i)
for i in l:
del dic[i]
print(dic)

  输出:

{'m5': 5, 'm6': 6, 'm7': 7}

  

  补充,可以直接这样做。

dic=dict(k1=1,k2=2,k3=3,k4=4,m5=5,m6=6,m7=7)

for i in list(dic):                             #这里本质上是for循环一个列表哦,与for i in dic,有着本质的区别。后面的实际上还是在迭代字典。这其实是上面方法的简化。
if 'k' in i:
del dic[i]
print(dic)

  

  综上列表和字典的两个例子,如果列表和字典涉及到删除,一定要慎重!

  

  如果想要实现这样一个功能。敏感词以字符串的格式存储在列表中,用户输入一段话,如果没有敏感词,直接输出,如果含有任意一个敏感词,让用户重新输入,直到输入合法为止。

  自我分析:刚开始还是有些懵逼的,看了老师讲的代码,也没理清老师的思路,直到自己用笔写在本子上,一点一点分析。试将思路整理如下:

  整体肯定是一个循环,虽然输入正确直接打印,相当于while循环走一遍,但这是可以用break实现的,重要的是如果有敏感词要让用户循环输入。、

  判定是否有敏感词本身这段代码时非常简单的。

  在循环体内,如果输入合法,直接break跳出循环,这里要有一个if 判断。如果输入不合法。这段代码不会执行,从而也不会break跳出循环体,实现了一直让用户输入的功能。

  上一条的if的条件怎么设定就是重中之重的,非常关键。无外乎两种情况,输入合法与不合法,这是就会考虑到tag标志位。初始化一个值,如果用户输入内容不合法,加一行代码,改变标志位。 如果用户输入合法,标志位不会发生改变。if判断,就可以实现上面的功能了。

  为什么要考虑到标志位,因为如果用户输入正确,直接打印用户输入的东西,而不循环。这段代码必须是在循环的第一等级中。但是由于如果用户输入错误,输入正确才执行的代码则不能执行,所以必须加一个条件判断,涉及到两种情况,所以要用到tag标志位。

l=['苍老师','小泽玛利亚','樱井莉亚']
while True:
tag=True
msg=input('==>')
for i in l:
if i in msg:
tag=False
break
if tag:
print(msg)
break

  

  

17.8.24补充:
int,str,bool,list,tuple,dict,set
  元素可以增加删除
    可变类型:list,dict,set
    不可变类型:int,str,bool,tuple

   可变类型,如果变量值相同,但是变量名的id是不一样的,这是毫无疑问的。

   不可变类型里,如果变量值形同,变量名的id是一致的,但是有一个例外,就是tuple。上代码。

a=tuple([1,2])
b=tuple([1,2])
print(a,id(a),type(a))
print(b,id(b),type(b))

  输出:

(1, 2) 2417742172872 <class 'tuple'>
(1, 2) 2417742172808 <class 'tuple'>

  得出结论:元组还是比较特殊的,相比其他不可变类型,如果变量值相等,python还是会在内存中开辟两块独立的空间。这与int,str,bool是不同的。

   

  

关于python数据类型的一些举例的更多相关文章

  1. Python学习笔记(五)--Python数据类型-数字及字符串

    Python数据类型:123和'123'一样吗?>>> 123=='123'False>>> type(123)<type 'int'>>> ...

  2. python数据类型(第一弹)

    作为一门计算机编程语言,python与其它语言一样,设有若干种数据类型,准确掌握各种数据类型的常用方法是精通python的必要条件,也是熟练使用各数据类型.最大限度发挥它们功能的基本条件. pytho ...

  3. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  4. python 数据类型---布尔型& 字符串

    python数据类型-----布尔型 真或假=>1或0 >>> 1==True True >>> 0==False True python 数据类型----- ...

  5. Python 数据类型及其用法

    本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组 ...

  6. day01-day04总结- Python 数据类型及其用法

    Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...

  7. Python数据类型及其方法详解

    Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...

  8. python数据类型之元组、字典、集合

    python数据类型元组.字典.集合 元组 python的元组与列表类似,不同的是元组是不可变的数据类型.元组使用小括号,列表使用方括号.当元组里只有一个元素是必须要加逗号: >>> ...

  9. 1 Python数据类型--

    常见的Python数据类型: (1)数值类型:就是平时处理的数字(整数.浮点数) (2)序列类型:有一系列的对象并排或者排列的情况.如字符串(str),列表(list),元组(tuple)等 (3)集 ...

随机推荐

  1. CPP-网络/通信:用CMarkup类操纵XML

      首先到http://www.firstobject.com/下载CMarkup教学版,解压后里面是一个DEMO,将Markup.h .cpp拷贝并添加到工程中,第一次编译可能会出现预编译错误,解决 ...

  2. 《剑指offer》51:数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  3. C Library - <limits.h>

    Introduction The limits.h header determines various properties of the various variable types. The ma ...

  4. javaweb基础(8)_HttpServletResponse生成验证码

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  5. tcp 高性能服务, netty,mqtt

    1. io 线程不要有比较长的服务. 全部异步化. [1] netty 权威指南上只是说业务复杂时派发到业务线程池种. 共用的线程池最好都轻量. 多层线程池后, 下层的可以进行隔离. 这个是 mqtt ...

  6. Java面向对象基础 ——面试题

    1面向对象基础 JAVA基础语法自行掌握. 三大特性: 一 封装:★★★★★ 概念:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:将变化隔离:便于使用:提高重用性:安全性. 封装原则: ...

  7. ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址

    首先需要JAR包 Spring整合Structs2的JAR包 struts2-spring-plugin-2.3.4.1.jar 下载地址 链接: https://pan.baidu.com/s/1o ...

  8. JAVA实现webSocket网页聊天室

    一.什么是webSocket WebSocket 是一种网络通信协议,是持久化协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全 ...

  9. C/C++基础知识:函数指针和指针函数的基本概念

    [函数指针] 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址.可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指 ...

  10. 初学者之 Git 和 Github

    git和github是两个完全不同的概念. git   是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容, ...