Python中的小问题

-----------------------✂---------------------------✂---------------------------

逻辑运算

( ̄^ ̄)ゞ

逻辑运算符:     not     and     or

运算顺序:       not      →      and      →      or
 
-----------------------✂---------------------------
 
not   A
 

  • 如果A表示True,结果就是True
  • 如果A表示False,结果就是False
     

-----------------------✂---------------------------
 
A   and   B
 

  • 如果A表示True,结果就是B
  • 如果A表示False,结果就是A
     

-----------------------✂---------------------------
 
A   or   B
 

  • 如果A表示False,结果就是B
  • 如果A表示True,结果就是A
     

-----------------------✂---------------------------

 

运算式结果
1 or 31
1 and 33
0 and 2 and 10
0 and 2 or 11
0 and 2 or 1 or 41
0 or False and 1False
not 0 or 1True

 
 
 
-----------------------✂---------------------------✂---------------------------

三元运算

( ̄^ ̄)ゞ

三元:     (  b1  )   if   (  A  )    else   (  b0  )

运算式结果
(7777)   if   (2>1)   else    (4396)7777
7777   if   2>1   else    43967777
(“True”)    if    (2>1)    (“False”)True
“True”    if    2>1    “False”True
(“True”)    if    (1>2)    (“False”)False
“True”    if    1>2    “False”False

 
 
 
-----------------------✂---------------------------✂---------------------------

一行代码 ^ 数值交换

( ̄^ ̄)ゞ

> a,b = b,a
  • a → b
  • b → a

本质:创建元组进行交换
  
c = a , b
  

c =  (  ( a , b )   =   ( b , a )  )

c = b , a

 
 
 
-----------------------✂---------------------------✂---------------------------

字符串反转 ^ 最常用的方法

( ̄^ ̄)ゞ

>>>	a = 'Uzi'
>>>	b = a [ : :-1]
>>>	print (b)
 --------------------------------------------------
izU

 
 
 
-----------------------✂---------------------------✂---------------------------

is 和 == 的区别

( ̄^ ̄)ゞ

符号判断值
is内存地址
==

 
Waring!!!       字符串丶驻留机制

  • 字符串      具有      驻留机制
  • 当发生驻留时,内存地址不变
     
     
  • 可以驻留的字符串

   由 数字字符下划线 组成的字符串


>>> str1='Uzi_forever_god'
>>> str2='Uzi_forever_god'
>>> print(str1 is str2)
 --------------------------------------------------
True


>>> print(id(str1))
>>> print(id(str2))
 --------------------------------------------------
2072034398512
2072034398512

 
 
 
-----------------------✂---------------------------✂---------------------------

深浅拷贝

( ̄^ ̄)ゞ

  • 赋值        不是拷贝,指向同一个对象
  • 浅拷贝     地址共用,仅拷贝对象中的父对象,不会拷贝对象的内部的子对象
  • 深拷贝     开辟新地址,地址不共用,完全拷贝了对象里的父对象与子对象

赋值:                 b = a
 
 在这里插入图片描述
 
 
a 和 b 指向同一个对象
一个发生改变,另一个也会发生改变

浅拷贝:              b = copy.copy(a)
 
 在这里插入图片描述
 
 
a 和 b 不指向同一个对象
父对象改变,另一个父对象不改变
子对象改变,另一个子对象也跟着改变

深拷贝:              b = copy.deepcopy(a)
 
 在这里插入图片描述
 
 
a 和 b 不指向同一个对象
父对象改变,另一个父对象不改变
子对象改变,另一个子对象不改变

import copy
a = [1, 2, 3, 4, [5, 6]]    #原始对象
b = a                       #赋值,传对象的引用
c = copy.copy(a)            #对象拷贝,浅拷贝
d = copy.deepcopy(a)        #对象拷贝,深拷贝


# 初始
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
print()
 --------------------------------------------------
a =  [1, 2, 3, 4, [5, 6]]
b =  [1, 2, 3, 4, [5, 6]]
c =  [1, 2, 3, 4, [5, 6]]
d =  [1, 2, 3, 4, [5, 6]]
 --------------------------------------------------


# 改变对象后

a.append('a')
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
print()
 --------------------------------------------------
a =  [1, 2, 3, 4, [5, 6], 'a']
b =  [1, 2, 3, 4, [5, 6], 'a']
c =  [1, 2, 3, 4, [5, 6]]
d =  [1, 2, 3, 4, [5, 6]]
 --------------------------------------------------


b.append('b')
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
print()
 --------------------------------------------------
a =  [1, 2, 3, 4, [5, 6], 'a', 'b']
b =  [1, 2, 3, 4, [5, 6], 'a', 'b']
c =  [1, 2, 3, 4, [5, 6]]
d =  [1, 2, 3, 4, [5, 6]]
 --------------------------------------------------


c[4].append('c')	
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
print()
 --------------------------------------------------
a =  [1, 2, 3, 4, [5, 6, 'c'], 'a', 'b']
b =  [1, 2, 3, 4, [5, 6, 'c'], 'a', 'b']
c =  [1, 2, 3, 4, [5, 6, 'c']]
d =  [1, 2, 3, 4, [5, 6]]
 --------------------------------------------------


d[4].append('d')
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
print()
 --------------------------------------------------
a =  [1, 2, 3, 4, [5, 6, 'c'], 'a', 'b']
b =  [1, 2, 3, 4, [5, 6, 'c'], 'a', 'b']
c =  [1, 2, 3, 4, [5, 6, 'c']]
d =  [1, 2, 3, 4, [5, 6, 'd']]
 --------------------------------------------------

 
 
 
-----------------------✂---------------------------✂---------------------------

交并集

( ̄^ ̄)ゞ

  • 首先用set集合
  • 然后再用符号操作
交并集Python操作符号含义
交集      a ∩ ba  &  b
并集     a ∪ ba 丨 b
反交集a  ^  b异或
差集a  -  b减号

A = [1,2,3,4]
B = [3,4,5,6]

# 首先用set集合 

a = set(A)
b = set(B)

# 然后再用符号操作

print(a & b)
print(a | b)
print(a ^ b)
print(a - b)

 --------------------------------------------------
[3,4]
[1,2,3,4,5,6]
[1,2,5,6]
[1,2]
 --------------------------------------------------
 

 
 
 
-----------------------✂---------------------------✂---------------------------

for 循环小陷阱

( ̄^ ̄)ゞ

a = [2,4,5,6,8,9,12]
for i in a:
	if ( i%2 == 0 ):
		a.remove(i)
print(a)

 --------------------------------------------------
[4,5,8,9]
 --------------------------------------------------

i = 0 :

[ 2 , 4 , 5 , 6 , 8 , 9 , 12 ]
    
a0 → 2 ,      Remove

i = 1:

[ 4 , 5 , 6 , 8 , 9 , 12 ]
    
a1 → 5 ,      Retain

i = 2:

[ 4 , 5 , 6 , 8 , 9 , 12 ]
    
a2 → 6 ,      Remove

i = 3:

[ 4 , 5 , 8 , 9 , 12 ]
    
a3 → 9 ,      Retain

i = 4:

[ 4 , 5 , 8 , 9 , 12 ]
    
a4 → 12 ,      Remove

Finish:

a = [ 4 , 5 , 8 , 9 ]

解决办法


for i in a:

   ↓↓↓
   
for i in a[:]:      #浅拷贝

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值