Python - Java vs Python 语法对比

 

回到顶部(go to top)

基础语法

运算符优先级

建议在优先级不清晰的时候打上括号

 

URL:http://www.taodudu.cc/news/show-4803654.html?action=onClick

 

for 循环 

能否自主决定i的值

java - “可以” 自主决定i循环到哪个值

int i = 0;
for( ; i < 10; i++){
    //....
    i = randomValue;
}

 

python - “不可以” 自主决定i循环到哪个值

for i in range(len(nums)):
    #....
    #希望自主决定下次循环的index...但是python不支持
    i = randomValue; # 会将这里的i视为新的变量,和循环的index i不一样

 

两层循环,怎么自由控制外层循环的i值

java - 两层for循环,自由控制外层循环点

int i = 0;
for(; i < 10; i++){
    for(int j = 0; j < 10; j++){
        //.....
        i = 5; //自由决定外层循环点
    }
}

 

 

python - - 两层for循环,“不能” 自由控制外层循环点。。需要将外层改为while循环

 

 

 

指数、取余

python

#指数

MOD = 10**9 + 1

#取余

res = num1 % MOD

 

 

int, float最大值、最小值

Java - Integer.MAX_VALUE/Integer.MIN_VALUE

 

Python

  • python2 最大整数值:sys.maxint,最小整数值:-sys.maxint-1
  • python3 最大整数值:sys.maxsize,最小整数值:-sys.maxsize-1
  • python3 最大浮点数值:float('inf'),最小浮点数值:-float('inf')

URL:

https://blog.csdn.net/uncle_ll/article/details/104367660

https://blog.csdn.net/weixin_43268010/article/details/120256212

import sys

max_value = sys.maxsize
min_value = -sys.maxsize - 1

 

 

自增操作

Java - ++

 

Python - 没有++,只能用 a = a+1或 a+=1代替

 

布尔值

Java - Boolean

...

Python - bool

注意:Python中所有数据类型的值自带布尔值。如此多的数据类型中只需要记住只有0、None、空、False的布尔值为False,其余的为True。

以下是 Python 中的假值:

  • 数字零(0)
  • 空字符串('')
  • False
  • None
  • 空列表([])
  • 空元组(())
  • 空字典({})

除了以上数据之外的其他的值都是真值。

复制代码
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
print(bool(False))

#输出
False
False
False
False
False
False
复制代码

 

and & 区别

Python - 

&是位运算符,and为逻辑运算符。

  • &会将左右两个整数转换为二进制进行计算,当同位都为1时取1,否则取0。例如2&3:10&11=10,故等于2。
  • and运算是判断是否为0,0为False,非0为True,结果为False则返回0/False,True则返回and运算符右侧的值。例如2 and 3 = 3


原文链接:https://blog.csdn.net/dogyii/article/details/122824087

and or

Java

...

Python - 注意有两种用法(1.判断语句;2.都是数字)

https://blog.csdn.net/xiaofengdada/article/details/122382203

python中的逻辑操作符and 和or,也叫惰性求值,由于是惰性,只要确定了值就不往后解析代码了

 

 

取反

Java -  “逻辑取反”!,“按位取反” ~

。。。

Python - “逻辑取反”not,“按位取反” ~

1、True和False被逻辑取反时要使用not。not是逻辑取反,而~是按位取反。

2、True和False相对应的值为1和0,~True相当于1按位取反,结果为-2,not True的结果为False。

复制代码
print(True)
print(~True)
print(not True)

# 结果是:
True
-2
False

# 类似的,~False的结果是1,not False 的结果才是True
print(False)
print(~False)
print(not False)

#结果是:
False
-1
True
复制代码

 

try catch

Python - try/except

https://blog.csdn.net/lwgkzl/article/details/81059433

复制代码
try:
  code    #需要判断是否会抛出异常的代码,如果没有异常处理,python会直接停止执行程序
 
except:  #这里会捕捉到上面代码中的异常,并根据异常抛出异常处理信息
#except ExceptionName,args:    #同时也可以接受异常名称和参数,针对不同形式的异常做处理
 
  code  #这里执行异常处理的相关代码,打印输出等
 
else#如果没有异常则执行else
 
  code  #try部分被正常执行后执行的代码
 
finally:
  code  #退出try语句块总会执行的程序
复制代码

 

三元操作符

https://www.jb51.net/article/223959.htm

java

int c = a > b ? a : b

 

python 

[statement_1] if [expression] else [statement_2]

以下程序中的三元运算符根据条件 a>b 分别计算为 True 或 False 来选择 a 或 b。

a, b = 2, 5

# 得到a,b的最大值
max = a if a > b else b 

print(max) # 5;运行程序,由于 a> b 返回 False,因此选择了 b。

 

回到顶部(go to top)

类型转换

str 互转 list —— usage: 当想修改字符串中的单个字符时

java

 

python

由于str是不可变类型,因此无法直接去修改某个索引的字符,但可以读:

s = 'abcdefg'
s1 = s[0] # 合法,结果为 s1 = 'a'
s[0] = 'b' # 不合法,str类型是不可变类型,不能直接修改某个索引下的值

 

有时遍历str时,需要及时记录修改字符,那就必须先转化为list,再转回str

复制代码
>>> s='abcdef'         #原字符串
>>> s1=list(s)         #将字符串转换为列表
>>> s1             
['a', 'b', 'c', 'd', 'e', 'f'] #列表的每一个元素为一个字符
>>> s1[4]='E'          #将列表中的第5个字符修改为E
>>> s1[5]='F'          #将列表中的第5个字符修改为E
>>> s1
['a', 'b', 'c', 'd', 'E', 'F'] 
>>> s=''.join(s1)        #用空串将列表中的所有字符重新连接为字符串
>>> s
'abcdEF'            #新字符串
复制代码

 

 

 

int 转 str

Java - String.valueOf(int)

Python - str(int)

 

int 转 char

Java - 0到9的int,可以用'0' + 9转换

Python - 没有专门的char类型,用str类型代替

https://blog.csdn.net/sinat_38682860/article/details/107935720

准确地讲,Python没有专门处理字节的数据类型。但由于str既是字符串,又可以表示字节,所以,字节数组=str

 

int 互转 float

参考wiki:

https://vimsky.com/examples/usage/how-to-convert-float-to-int-in-python.html

https://blog.csdn.net/weixin_46658699/article/details/110098537

int 转 float - float()

对于float()函数,它只有一个格式:float([x])。该格式的功能是将一个数字或字符串转换成浮点数(返回一个十进制浮点型数值(小数))。和上面的int([x])有些类似。

float([x])中x的数值可以是十进制的数(小数和整数),bool类型(布尔值True和False)或表示十进制数字的字符串(如:‘7’、‘-7’等)。

复制代码
>>> float()#如果未给定参数,则返回0.0。
0.0
>>> float(1)#如果参数是整数,将返回等值的浮点数(Python的浮点精度内)
1.0
>>> float(1.233)#如果参数是浮点数,将返回等值的浮点数(Python的浮点精度内)
1.233
>>> float(-1.233)#这里需要注意的是,如果参数超出Python浮点范围,将会引发OverflowError错误
-1.233
>>> float('7')
7.0
>>> float('-7.7')
-7.7
>>> float(True)#布尔值True 对应1.0
1.0
>>> float(False)#布尔值False 对应0.0
0.0
>>> float('inf')#“inf”、“Inf”、“INFINITY”和“iNfINity”都是可以被float接受的正无穷大的拼写方式
inf
>>> float('Inf')
inf
>>> float('INFINITY')
inf
>>> float('-inf')#负无穷大
-inf
>>> 
复制代码

 

float 转 int - int() 可能不稳定

该格式的功能为截取数字的整数部分或者将字符串转换成一个整数。简单的说就是将一个字符串(这里需要注意的是int()函数不接受带小数的数字字符串)或数字(可正,可负,可为零,可带小数点)转换为整型。

复制代码
>>> int()#如果不给参数,则返回 0
0
>>> int(0)
0
>>> int(1.23)#加号 “+” 对值无影响 故一般省略
1
>>> int(-1.23)
-1
>>> int('4')
4
>>> int("4")#加号 “+” 对值无影响 故一般省略
4
>>> int('-4')
-4
>>> int('1.23')#int()函数不接受带小数的数字字符串
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    int('1.23')
ValueError: invalid literal for int() with base 10: '1.23'
>>> int('-1.23')#int()函数不接受带小数的数字字符串
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    int('-1.23')
ValueError: invalid literal for int() with base 10: '-1.23'
>>> int('a')#单纯这样写是不可的!
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    int('a')
ValueError: invalid literal for int() with base 10: 'a'
>>> 
复制代码

 

但该方法存在不稳定性

复制代码
# example of unpredictable 
# behaviour of int()
  
num1 = 5.9
num2 = 5.99999999999999999999
  
num1 = int(num1)
num2 = int(num2)
  
print(num1, num2, sep = '\n')

#输出:
5
6
复制代码

 

 

float 转 int - math.floor()/ceil() 更稳定

可以使用 math.floor() 函数将浮点值转换为不大于输入的 int 值,也可以使用 math.ceil() 函数将其转换为大于输入的最小整数的 int 值。为了使用这些方法,要导入数学模块。

 

 

回到顶部(go to top)

工具类

队列、优先队列(最小堆),栈,双端队列

Java - LinkedList可以实现queue,stack,deque

https://www.cnblogs.com/frankcui/p/12125210.html#_label19

 

Python - deque可以实现queue, stack, deque

https://blog.csdn.net/Night__owl/article/details/122709406

复制代码
# deque实现栈,队列
from collections import deque

stack = deque()
stack.append(1)
stack.append(3)
stack.append(5)
stack.append(7)
stack.append(1)

print(stack)

# 加入栈尾
print("\n-----加入栈尾-----")
stack.appendleft(0)
print(stack)
print(f"1 的个数为 {stack.count(1)}")

# 栈尾出栈
print("\n-----栈尾出栈-----")
stack.popleft()
print(stack)

# 反转栈
print("\n-----反转栈-----")
stack.reverse()
print(stack)

print("\n-----栈的长度-----")
print(len(stack))
复制代码

 

output:

复制代码
deque([1, 3, 5, 7, 1])

-----加入栈尾-----
deque([0, 1, 3, 5, 7, 1])
1 的个数为 2

-----栈尾出栈-----
deque([1, 3, 5, 7, 1])

-----反转栈-----
deque([1, 7, 5, 3, 1])

-----栈的长度-----
5
复制代码

 

栈 stack

java

 

 

python

除了使用上面说的全能deque以外,更简便的实现是python自带的list,就能实现stack操作

class Solution:
    def removeStars(self, s: str) -> str:
        st = [] #声明一个list,就能当做stack来使用
        for c in s:
            if c == '*': st.pop() #弹出最右侧的元素
            else: st.append(c) #在最右侧加入元素
        return ''.join(st)

 

 

 

最大堆,最小堆

Java - PriorityQueue<T>

https://www.cnblogs.com/frankcui/p/12125210.html#_label23

 

Python - PriorityQueue优先队列(最小堆),heapq库(最小堆)

优先队列:https://blog.csdn.net/Night__owl/article/details/122709406

heapq库:https://blog.csdn.net/wangws_sb/article/details/124108070 

注意:python中的heapq库只有最小堆,没有最大堆,当使用最大堆时,可以在插入元素时将元素取反,弹出是也取反。

常见API:

复制代码
import heapq
# [2,0,4,1]
 
# 1.创建堆
# 方法一:定义一个空列表,然后使用heapq.heqppush(item)函数把元素加入到堆中
item = 2
heap = []
heapq.heappush(heap,item)
# 方法二:使用heapq.heapify(list)将列表转换为堆结构
heap = [2,0,4,1]
heapq.heapify(heap)
 
# 2.heapq.heappush() 添加新元素 num
num = 3
heapq.heappush(heap,num)
 
# 3.heapq.heappop() 删除并返回堆顶元素
heapq.heappop(heap)
 
# 4.heapq.heappushpop() 比较添加元素num与堆顶元素的大小:如果num>堆顶元素,删除并返回堆顶元素,然后添加新元素num;如果num<堆顶元素,返回num,原堆不变
# 其实也就等价于 添加新元素num,然后删除并返回堆顶元素
num = 0
heapq.heappushpop(heap,num)
 
# 5.heapq.heapreplace() 删除并返回堆顶元素,然后添加新元素num
num = 5
heapq.heapreplace(heap,num)
 
# 6. heapq.merge() 合并多个排序后的序列成一个排序后的序列, 返回排序后的值的迭代器。
heap1 = [1,3,5,7]
heap2 = [2,4,6,8]
heap = heapq.merge(heap1,heap2)
print(list(heap))
 
# 7.heapq.nsmallest() 查询堆中的最小n个元素
n = 3
heap = [1,3,5,7,2,4,6,8]
print(heapq.nsmallest(n,heap)) # [1,2,3]
 
# 8.heapq.nlargest() 查询堆中的最大n个元素
n = 3
heap = [1,3,5,7,2,4,6,8]
print(heapq.nlargest(n,heap)) # [8,7,6]
复制代码

 

回到顶部(go to top)

内置函数 - sort(),range(),len()

sort()

range()

len()

https://www.runoob.com/python/python-built-in-functions.html

 

posted on   frank_cui  阅读(105)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-06-17 IDEA - 断点的导入导出
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示