Python小技巧(SmartSkill)

本文介绍了Python中数字交换、循环过程中的条件判断优化、逻辑运算与位运算的区别,以及如何使用列表推导式、map()函数实现多变量赋值。特别强调了列表处理和变量赋值的最佳实践。
摘要由CSDN通过智能技术生成

一、两值交换

示例:输入两个数字,让其按升序排列
该方法无需借助中间变量进行数据交换

a = int(input('请输入a的值:'))
b = int(input('请输入b的值:'))
if a > b:
    a, b = b, a
print(f'a={a}, b={b}')

二、循环过程中的条件判断优化

示例:输出n个*,并在每输出w个后换行
for _ in range(n)
"_"下划线的含义是提醒程序员不要在这个循环体内使用这个变量的值,
并不影响循环的使用

# 优化前:for语句每执行一次,if语句都需进行判断,执行50000次就需判断50000次
n = int(input('符号总数:'))
w = int(input('每隔多少个换行:'))
for i in range(n):
    print('*',end='')
    if i%w==w-1:
        print() # 换行
if n%w:
    print() # 换行
# 优化后:只需执行一次判断
n = int(input('符号总数:'))
w = int(input('每隔多少个换行:'))
for _ in range(n // w): # 每行输出整数个*
    print('*' * w)

rest = n % w
if rest:    # 输出最后一行余数个*
    print('*' * rest)

三、逻辑运算与位运算

已知x,y=1,2 ,求x,y的and,or,not,&,|运算的结果

问题:区分and和&、or和|的区别

x, y = 1, 2
# 位运算 x:0001 y:0010
print(x & y)    # &运算结果:0000 ->0 (十进制)
print(x | y)    # |运算结果:0011 ->3 (十进制)
# 逻辑运算
print(x and y)  # and运算结果:2     从右往左解析。  1、有0取0   2、没0的情况,取右边第一个真值
print(x or y)   # or运算结果:1      从左往右解析。  1、有0跳过,全为0则取0   2、从左取第一个真值
print(not x)

参考资料:python——and和or逻辑运算符用法详解_python or-CSDN博客

四、一行input()给列表和多变量赋值

需求:输入1 2 3 4,中间以空格隔开,生成元素为整型的列表[1,2,3,4],并分别给a,b,c,d四个变量赋值

方案一:常规方法

# 方法一 传统方法
num_str = input('请输入数字(以空格间隔):')
num_list = num_str.split(' ')
num_list_new = []
for i in num_list:
    num_list_new.append(int(i))
print(num_list_new)
a,b,c,d = num_list_new
print(f'{a=}\t{b=}\t{c=}\t{d=}')

方案二:列表推导式

# 方法二 列表推导式
num_list = [int(i) for i in input('请输入数字(以空格间隔):').split()]
print(num_list)
a,b,c,d = num_list
print(f'{a=}\t{b=}\t{c=}\t{d=}')

方案三:map()映射函数

# 方法三 map()映射函数
num_list = list(map(int,input('请输入数字(以空格间隔):').split()))
print(num_list)
a,b,c,d = num_list
print(f'{a=}\t{b=}\t{c=}\t{d=}')

方案四:直接input().split(),缺点无法直接生成int类型的元素

# 方法四 直接input().split(),缺点无法直接生成int类型的元素
num_list = input('请输入数字(以空格间隔):').split()
print(num_list,type(num_list))
a,b,c,d = num_list
print(f'{a=}\t{b=}\t{c=}\t{d=}')

总结:

        1、生成列表建议使用列表推导式

        2、给多变量赋值建议使用map()函数,便于生成需求类型的元素

        3、给字符变量赋值,直接input().split()

        4、split()函数默认分割空格,无需引号+空格+引号。如果有其他分割标记可使用split(’分割标记‘)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值