Hướng dẫn swap function in python - hoán đổi chức năng trong python

Trong bài viết này, mình xin giới thiệu 1 số thủ thuật hay mà mình biết trong Python

Nội dung chính ShowShow

  • 1. swap 2 biến
  • 2. so sánh kép
  • 3. phép gán 1 biến đi kèm với điều kiện
  • 4. toán tử _
  • 5. đơn giản hóa điều kiện if
  • 7. enum trong python
  • 8. Tìm giá trị lặp lại nhiều lần nhất trong list
  • 9. đếm số lần xuất hiện trong list
  • 10. Boolean
  • 11. XKCD Comics
  • 12. enumerate
  • 13. Kiểm tra 2 từ là anagram (đổi chữ)
  • 1. swap 2 biến
  • 2. so sánh kép
  • 3. phép gán 1 biến đi kèm với điều kiện
  • 4. toán tử _
  • 5. đơn giản hóa điều kiện if
  • 7. enum trong python
  • 8. Tìm giá trị lặp lại nhiều lần nhất trong list
  • 9. đếm số lần xuất hiện trong list
  • 10. Boolean
  • 11. XKCD Comics
  • 12. enumerate
  • 13. Kiểm tra 2 từ là anagram (đổi chữ)

1. swap 2 biến

với một vài ngôn ngữ thì việc swap giá trị của 2 biến có thể coi là đơn giản nhưng không về ngắn gọn, với python ta hoàn toàn có thể swap giá trị của 2 biến chỉ bằng một lệnh gán

>>> x, y = 10, 20
>>> print(x, y)
>>> x, y = y, x
>>> print(x, y)

kết quả sẽ là

>>> 2 + 1
3
>>> _
3
>>> print _
3
4 và (20,10)` dự vào đây t sẽ có 1 cách rất cool để tìm ra giá trị ở vị trí thứ n trong dãy Fibonaci

a, b = 0, 1
for i in range(n):
	a, b = b, a + b

2. so sánh kép

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False

3. phép gán 1 biến đi kèm với điều kiện

def small(a, b, c):
    return a if a <= b and a <= c else (b if b <= a and b <= c else c)

>>> print(small(1, 0, 1))
0
>>> print(small(1, 2, 2))
1
>>> print(small(2, 2, 3))
2
>>> print(small(5, 4, 3))
3

4. toán tử _

5. đơn giản hóa điều kiện if

>>> 2 + 1
3
>>> _
3
>>> print _
3

5. đơn giản hóa điều kiện if

7. enum trong python

if m==1 or m==3 or m==5 or m==7:

8. Tìm giá trị lặp lại nhiều lần nhất trong list

if m in [1,3,5,7]:

9. đếm số lần xuất hiện trong list

6.Reverse

10. Boolean

>>> "Python2.7"[::-1]
7.2nohtyP
>>> [1, 3, 5][::-1]
[5, 3, 1]

7. enum trong python

8. Tìm giá trị lặp lại nhiều lần nhất trong list

class Shapes:
    Circle, Square, Triangle, Quadrangle = range(4)
    
>>> print(Shapes.Circle)
0
>>> print(Shapes.Square)
1
>>> print(Shapes.Triangle)
2
>>> print(Shapes.Quadrangle)
3

8. Tìm giá trị lặp lại nhiều lần nhất trong list

>>> test = [4,1,2,3,2,2,3,1,4,4,4]
>>> print(max(set(test), key=test.count))
4

9. đếm số lần xuất hiện trong list

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
0

9. đếm số lần xuất hiện trong list

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
1

10. Boolean

11. XKCD Comics

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
2

12. enumerate

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
3

11. XKCD Comics

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
4

12. enumerate

12. enumerate

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
5
a, b = 0, 1
for i in range(n):
	a, b = b, a + b
6

13. Kiểm tra 2 từ là anagram (đổi chữ)

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
7

với một vài ngôn ngữ thì việc swap giá trị của 2 biến có thể coi là đơn giản nhưng không về ngắn gọn, với python ta hoàn toàn có thể swap giá trị của 2 biến chỉ bằng một lệnh gán

kết quả sẽ là

>>> 2 + 1
3
>>> _
3
>>> print _
3
4 và (20,10)` dự vào đây t sẽ có 1 cách rất cool để tìm ra giá trị ở vị trí thứ n trong dãy Fibonaci

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
8

toán từ `_1 sẽ trả về kết quả của biểu thức cuối cùng được thực hiện

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
9

khi viết một điều kiện if thay vì viết

ta có thể viết thành

đối với

>>> 2 + 1
3
>>> _
3
>>> print _
3
5 ta cũng có thể dùng
>>> 2 + 1
3
>>> _
3
>>> print _
3
6 thay vì
>>> 2 + 1
3
>>> _
3
>>> print _
3
7

  • 1. swap 2 biến
  • 2. so sánh kép
  • 3. phép gán 1 biến đi kèm với điều kiện
  • 4. toán tử _
  • 5. đơn giản hóa điều kiện if
  • 7. enum trong python
  • 8. Tìm giá trị lặp lại nhiều lần nhất trong list
  • 9. đếm số lần xuất hiện trong list
  • 10. Boolean
  • 11. XKCD Comics
  • 12. enumerate
  • 13. Kiểm tra 2 từ là anagram (đổi chữ)

với một vài ngôn ngữ thì việc swap giá trị của 2 biến có thể coi là đơn giản nhưng không về ngắn gọn, với python ta hoàn toàn có thể swap giá trị của 2 biến chỉ bằng một lệnh gán Trong Python, có một cấu trúc đơn giản và cú pháp gọn gàng để hoán đổi các biến, chúng ta chỉ cần viết ra “x,y=y, x”.

kết quả sẽ là

>>> 2 + 1
3
>>> _
3
>>> print _
3
4 và (20,10)` dự vào đây t sẽ có 1 cách rất cool để tìm ra giá trị ở vị trí thứ n trong dãy Fibonaci Dưới đây là một giải pháp cổ điển thường được cung cấp

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False
0

toán từ `_1 sẽ trả về kết quả của biểu thức cuối cùng được thực hiệnsequence point giữa các thay đổi.

khi viết một điều kiện if thay vì viết

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False
1

ta có thể viết thành Trong Java, các quy tắc để đánh giá biểu thức phụ được xác định rõ ràng. Toán hạng tay trái luôn được đánh giá trước toán hạng tay phải (Xem phần này để biết thêm chi tiết). Trong Java, biểu thức “x ^ = y ^ = x ^ = y;” không tạo ra kết quả chính xác theo quy tắc Java. Nó đưa ra kết quả x = 0. Tuy nhiên, chúng ta có thể sử dụng “x = x ^ y ^ (y = x);” Lưu ý các biểu thức được đánh giá từ trái sang phải. Nếu ban đầu x = 5 và y = 10, biểu thức tương đương với “ x = 5 ^ 10 ^ (y = 5);”. Lưu ý rằng chúng ta không thể sử dụng điều này như trong C / C ++, nó không được định nghĩa liệu toán hạng trái hay toán hạng phải được thực thi cho bất kỳ toán tử nào (Xem phần này để biết thêm chi tiết)

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False
2

đối với

>>> 2 + 1
3
>>> _
3
>>> print _
3
5 ta cũng có thể dùng
>>> 2 + 1
3
>>> _
3
>>> print _
3
6 thay vì
>>> 2 + 1
3
>>> _
3
>>> print _
3
7

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False
3

Trong python ta có thể dễ dàng reverse một string hoặc một list

  • Trong python có 1 cách rất đơn giản để sử dụng enum
  • b = (a + b) – (a = b); 
  • a + = b – (b = a); 
  • a = a * b / (b = a) 

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.
  • Các series tự học lập trình khác

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

Trong bài viết này, mình xin giới thiệu 1 số thủ thuật hay mà mình biết trong Python

1. swap 2 biến

với một vài ngôn ngữ thì việc swap giá trị của 2 biến có thể coi là đơn giản nhưng không về ngắn gọn, với python ta hoàn toàn có thể swap giá trị của 2 biến chỉ bằng một lệnh gán

>>> x, y = 10, 20
>>> print(x, y)
>>> x, y = y, x
>>> print(x, y)

kết quả sẽ là

>>> 2 + 1
3
>>> _
3
>>> print _
3
4 và (20,10)` dự vào đây t sẽ có 1 cách rất cool để tìm ra giá trị ở vị trí thứ n trong dãy Fibonaci

a, b = 0, 1
for i in range(n):
	a, b = b, a + b

2. so sánh kép

>>> n = 10
>>> result = 1 < n < 20
>>> print(result)
True
>>> result = 1 > n <= 9
>>> print(result)
False

3. phép gán 1 biến đi kèm với điều kiện

def small(a, b, c):
    return a if a <= b and a <= c else (b if b <= a and b <= c else c)

>>> print(small(1, 0, 1))
0
>>> print(small(1, 2, 2))
1
>>> print(small(2, 2, 3))
2
>>> print(small(5, 4, 3))
3

4. toán tử _

toán từ `_1 sẽ trả về kết quả của biểu thức cuối cùng được thực hiện

>>> 2 + 1
3
>>> _
3
>>> print _
3

5. đơn giản hóa điều kiện if

khi viết một điều kiện if thay vì viết

if m==1 or m==3 or m==5 or m==7:

ta có thể viết thành

if m in [1,3,5,7]:

đối với

>>> 2 + 1
3
>>> _
3
>>> print _
3
5 ta cũng có thể dùng
>>> 2 + 1
3
>>> _
3
>>> print _
3
6 thay vì
>>> 2 + 1
3
>>> _
3
>>> print _
3
7

6.Reverse

Trong python ta có thể dễ dàng reverse một string hoặc một list

>>> "Python2.7"[::-1]
7.2nohtyP
>>> [1, 3, 5][::-1]
[5, 3, 1]

7. enum trong python

Trong python có 1 cách rất đơn giản để sử dụng enum

class Shapes:
    Circle, Square, Triangle, Quadrangle = range(4)
    
>>> print(Shapes.Circle)
0
>>> print(Shapes.Square)
1
>>> print(Shapes.Triangle)
2
>>> print(Shapes.Quadrangle)
3

8. Tìm giá trị lặp lại nhiều lần nhất trong list

>>> test = [4,1,2,3,2,2,3,1,4,4,4]
>>> print(max(set(test), key=test.count))
4

trong trường hợp list có 2 giá trị có số lần lặp lại nhiều nhất thì hàm trên sẽ trả lại giá trị nhỏ hơn

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
0

9. đếm số lần xuất hiện trong list

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
1

10. Boolean

Boolean cũng có thể được truyền như một số int

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
2

Với python 2.7 ta thậm chí có thể gán giá trị cho

>>> 2 + 1
3
>>> _
3
>>> print _
3
8

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
3

11. XKCD Comics

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
4

khi bạn type cmd này trong terminal, bạn sẽ nhận được 1 comic trong trình duyệt như link này https://xkcd.com/353/

12. enumerate

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
5
a, b = 0, 1
for i in range(n):
	a, b = b, a + b
6

13. Kiểm tra 2 từ là anagram (đổi chữ)

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
7

14. switch

Trong python không có

>>> 2 + 1
3
>>> _
3
>>> print _
3
9 nhưng ta có thể dùng dictionary để giải quyết vấn đề này

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
8

15. Float

a, b = 0, 1
for i in range(n):
	a, b = b, a + b
9

Đây có thể không phải là 1 thủ thuật tuy nhiên đây là một điều cần lưu ý là số hữu tỷ không được biểu diễn chính xác trên máy tính và khi ta thấy một giá trị có kiểu float thì đa phần đây là một giá trị xấp xỉ chứ không phải là một giá trị chính xác, để giải thích rõ thì bạn có thể xem tại https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues