Bạn có thể chuyển đổi danh sách thành int trong Python không?

Làm cách nào để bạn chuyển đổi danh sách chuỗi thành danh sách số nguyên trong Python?

Python Chuyển đổi danh sách thành chuỗi. Pyt

Vui lòng bật JavaScript

Python Chuyển đổi danh sách thành chuỗi. Hướng dẫn Python 2022. Phương thức tham gia Python

Để chuyển đổi danh sách chuỗi thành danh sách số nguyên, hãy sử dụng hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 tích hợp nếu bạn biết tất cả nội dung của danh sách ban đầu sẽ chuyển đổi thành số nguyên, nếu không, hãy sử dụng hàm
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 trong
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 của bạn hoặc sử dụng cách hiểu danh sách có điều kiện

Hãy xem cách bạn có thể thay đổi danh sách ban đầu của mình bằng cách sử dụng các phương pháp dưới đây

Sửa đổi danh sách bằng cách sử dụng
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
8 tích hợp có 2 tham số. đầu tiên là chức năng [
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
9] để sửa đổi từng phần tử trong lần lặp của tham số thứ hai [
list[map[int, string_list]]
0].
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
9 chỉ cần một tham số vì hàm
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 chèn từng phần tử từ iterable vào hàm

Nếu bạn có một danh sách các chuỗi có thể thay đổi gọn gàng thành số nguyên, bạn có thể giải quyết vấn đề này bằng cách chèn phương thức tích hợp sẵn

list[map[int, string_list]]
3 [chỉ nhận một tham số] và sử dụng phương thức này làm tham số đầu tiên cho hàm
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4

Đây là cách nó sẽ trông như thế nào

>>> my_list = ['1', '2', '3']
>>> map[int, my_list]

Như bạn có thể thấy từ kết quả trên từ Python REPL của tôi, đầu ra là một

list[map[int, string_list]]
5

Để kiểm tra nội dung của

list[map[int, string_list]]
5, bạn có thể sử dụng hàm
list[map[int, string_list]]
7 với toán tử dấu hoa thị trên hàm
list[map[int, string_list]]
8, nhưng vì điều này sẽ khiến bạn khó xác định liệu có thay đổi thực sự đối với các thành phần hay không nên tôi sẽ đưa kết quả vào

Đây là những gì bạn sẽ thấy khi kiểm tra

list[map[int, string_list]]
5

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']

Từ đoạn mã trên, bạn có thể thấy rằng bằng cách sử dụng toán tử dấu hoa thị, rất khó để xác định xem các giá trị có thay đổi hay không. Tuy nhiên, việc sử dụng hàm có sẵn

list[map[int, string_list]]
9 hiển thị rõ ràng các giá trị trong danh sách mới là số nguyên không phải chuỗi – và bạn có thể thấy sự khác biệt giữa danh sách chuỗi [danh sách gốc] và danh sách mới với cách cả hai đều xuất ra danh sách

Thêm thông báo về cách danh sách nguồn ban đầu không bị sửa đổi. Do đó, hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 không làm thay đổi khả năng lặp được truyền vào tham số thứ hai của nó

Do đó, để thay đổi danh sách các chuỗi thành danh sách các số nguyên, bạn có thể sử dụng một lớp lót sau

list[map[int, string_list]]

Trong đó

>>> my_list = ['1', '2', 'e']
>>> list[map[int, my_list]]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'e'
3 là biến nguồn chứa danh sách các chuỗi

Nhưng nếu danh sách chuỗi ban đầu chứa các chuỗi không thể chuyển đổi thành số nguyên thì sao?

Giả sử bạn có danh sách sau với một phần tử trong danh sách không thể dễ dàng chuyển đổi thành số nguyên bằng cách sử dụng hàm

list[map[int, string_list]]
3

>>> my_list = ['1', '2', 'e']
>>> list[map[int, my_list]]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'e'

Như bạn có thể thấy, việc cố gắng buộc chuyển đổi trên một phần tử sẽ không thay đổi thành số nguyên bằng cách sử dụng phương pháp

list[map[int, string_list]]
3 sẽ tạo ra một
>>> my_list = ['1', '2', 'e']
>>> list[map[int, my_list]]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'e'
6

Đây là nơi nếu có khả năng danh sách nguồn của bạn có thể chứa các phần tử không dễ dàng chuyển đổi thành số nguyên mà bạn sẽ cần áp dụng tính năng lọc

Sử dụng
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 với
>>> my_list = ['1', '2', 'e']
>>> list[map[int, my_list]]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'e'
8 làm bộ lọc trong hàm
list[map[int, string_list]]
8

Một phương tiện để có thể cung cấp bộ lọc trên các giá trị được lặp lại thông qua việc sử dụng hàm

list[map[int, string_list]]
8 là thay thế tham số
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
9 [tham số đầu tiên trong hàm
list[map[int, string_list]]
8] mà tôi hiện có dưới dạng hàm
list[map[int, string_list]]
3 là thay đổi nó bằng một tùy chỉnh
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5

Khi hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 chuyển mỗi lần lặp lại cho hàm
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
9 trong tham số đầu tiên, hàm
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 chỉ cần một tham số, như vậy

lambda x: rest of function goes here

Sau đó, vấn đề là làm việc ở phía bên phải của cuộc gọi

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 để tạo ra những gì bạn muốn trả về

Trường hợp của chúng ta ở đây là xác định xem giá trị được truyền vào [được biểu thị bằng tham số

lambda x: rest of function goes here
9 cho mỗi giá trị từ danh sách chuỗi] có chuyển đổi thành số nguyên hay không, nếu không thì bạn có thể loại bỏ nó và tiếp tục

Cách chuyển đổi chuỗi thành số nguyên mà không cần sử dụng
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
0

Một phương pháp kiểm tra xem một chuỗi có thay đổi thành số nguyên không mà không sử dụng câu lệnh

>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
1 hay không là thay thế tất cả các số trong chuỗi bằng một chuỗi rỗng và xem liệu còn sót lại thứ gì không

Nguyên tắc trông giống như thế này

>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1

Như bạn có thể thấy từ hai ví dụ trên, sau khi nhập thư viện regex bằng câu lệnh

>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
2, tôi đã tạo một chuỗi có nhãn
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
3 chứa tất cả các số nguyên. Sử dụng phương pháp
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
4 [thay thế biểu thức chính quy], tôi đã chèn mẫu biểu thức chính quy vào ba tham số của nó để tìm tất cả các chữ số [
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
5], đầu tiên, chuỗi rỗng
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
6 để thay thế cho từng chữ số được tìm thấy, thứ hai và cuối cùng là chuỗi để thực hiện thao tác trên

Bằng cách gói

>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
4 với
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
8, sau đó tôi có thể xác định độ dài của chuỗi còn lại sau khi thay thế đã xảy ra. Trong ví dụ đầu tiên của tôi ở trên, chuỗi cuối cùng có độ dài 0 vì tất cả các ký tự trong chuỗi đều là chữ số, trong khi ví dụ thứ hai có độ dài 1 vì một ký tự trong chuỗi không phải là chữ số

Sử dụng phương pháp tương tự này trong hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 sẽ giống như thế này

lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None

Trong hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 ở trên, tôi đã giả sử nhập thư viện regex. Nếu bạn muốn loại trừ việc nhập thư viện, bạn có thể sử dụng phương thức chuỗi tích hợp sẵn
lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
1 để làm điều tương tự, tuy nhiên, mỗi chữ số sẽ cần phải được xâu chuỗi lại với nhau, điều này làm cho biểu thức rất dài

Đây là biểu thức

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 ở trên sẽ trông như thế nào nếu không có câu lệnh
>>> import re
>>> a_string = '123'
>>> len[re.sub[r'\d+', '', a_string]]
0
>>> b_string = '123A123'
>>> len[re.sub[r'\d+', '', b_string]]
1
2 và sử dụng cách tiếp cận
lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
1

lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None

Như bạn có thể thấy khi so sánh cả hai cách tiếp cận, việc nhập thư viện Regex nhỏ hơn, đơn giản hơn rất nhiều và do đó ít mắc lỗi hơn

Bên cạnh việc thay thế các chuỗi chữ số thành các chuỗi trống, tôi cũng đã thêm một bước kiểm tra sơ bộ để đảm bảo rằng một giá trị đang được chuyển vào hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 bằng cách viết mã
lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
6. Điều này sẽ ngăn chặn bất kỳ dương tính giả đi qua

>>> a_var = ''
>>> int[a_var] if len[re.sub[r'\d+', '', a_var]] == 0 else None
Traceback [most recent call last]:
  File "", line 1, in 
ValueError: invalid literal for int[] with base 10: ''

Như bạn có thể thấy biến ban đầu

lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
7 giữ một chuỗi trống có thể trượt qua các vết nứt nếu ban đầu không kiểm tra độ dài. Do đó,
lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
6 là cần thiết để ngăn điều này xảy ra

Điều gì xảy ra nếu chuỗi số nguyên chứa hàng nghìn dấu phân cách [như dấu phẩy hoặc dấu chấm]?

Một chuỗi số nguyên vẫn có thể hợp lệ nhưng nó có thể chứa các ký tự khác để phân tách hàng nghìn vị trí, chẳng hạn như

lambda x: int[x] if len[x] > 0 and len[re.sub[r'\d+', '', x]] == 0 else None
9 để biểu thị một triệu. Nếu điều này là cần thiết cho trường hợp sử dụng của bạn thì bạn có thể thêm vào phần thay thế dấu phẩy hoặc dấu chấm cần thiết

Đây là cách điều này sẽ tìm kiếm cho từng phương pháp

lambda x: int[x.replace[',', '']] if len[x] > 0 and len[re.sub[r'\d+|,', '', x]] == 0 else None
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
0

Kiểm tra kết quả mã của chúng tôi trong Python REPL sẽ giống như thế này

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
1

Kết quả đạt được bằng cách sử dụng mã ở trên để giúp loại bỏ bất kỳ dấu phân cách hàng nghìn nào, chẳng hạn như dấu phẩy và tất cả trong một dòng mã

Nhưng lưu ý rằng kết quả tạo ra một danh sách có cùng kích thước với danh sách ban đầu với

lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
0 cho bất kỳ phần tử nào không thể dễ dàng chuyển đổi thành số nguyên

Bạn có thể thay đổi hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
5 để báo cáo các phần tử không thể thay đổi bằng cách tráo đổi
lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
0 trong câu lệnh
lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
3 với
lambda x: rest of function goes here
9, như thế này

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
2

Báo cáo các phần tử ban đầu trở lại danh sách có thể hữu ích nếu cần thêm công việc chuyển đổi chuỗi

Nếu danh sách mới loại bỏ bất kỳ phần tử nào sẽ không được chuyển đổi thành số nguyên, bạn có thể sử dụng cách tiếp cận khác bằng cách sử dụng khả năng hiểu danh sách

Lọc và loại bỏ các phần tử mà không cần sử dụng
>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4

Để lọc các phần tử từ danh sách gốc dựa trên các điều kiện nhất định, bạn có thể sử dụng tính năng hiểu danh sách tiện dụng

Với các ví dụ hoạt động hiện tại, đây là cách thức hoạt động của nó

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
3

Sự khác biệt lớn nhất với khả năng hiểu danh sách so với hàm

>>> print[*map[int, my_list]]
1 2 3
>>> list[map[int, my_list]]
[1, 2, 3]
>>> print[my_list]
['1', '2', '3']
4 là xử lý các trường hợp
lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
7. Trong cách hiểu danh sách ở trên, điều kiện
>>> my_list = ['1', '2', 'e']
>>> list[map[int, my_list]]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 10: 'e'
8 lọc từng phần tử theo điều kiện và nếu nó không đáp ứng tiêu chí này thì phần tử đó sẽ không được đưa lên phía trước câu lệnh
lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
9

Tóm lược

Khả năng hiểu danh sách cung cấp một đoạn mã đơn giản có thể dễ dàng chuyển đổi danh sách chuỗi thành số nguyên và loại bỏ bất kỳ phần tử nào trong danh sách không thể dễ dàng chuyển đổi thành số nguyên

Nếu điều quan trọng là phải đặt thứ gì đó vào danh sách số nguyên mới hoặc để hiển thị các phần tử từ danh sách ban đầu không thể thay đổi, bạn có thể báo cáo lại phần tử ban đầu hoặc một giá trị mặc định, chẳng hạn như

lambda x: int[x] if len[x] > 0 and len[x.replace['0', ''].replace['1', ''].replace['2', ''].replace['3', ''].replace['4', ''].replace['5', ''].replace['6', ''].replace['7', ''].replace['8', ''].replace['9', ''] == 0 else None
0 hoặc
>>> a_var = ''
>>> int[a_var] if len[re.sub[r'\d+', '', a_var]] == 0 else None
Traceback [most recent call last]:
  File "", line 1, in 
ValueError: invalid literal for int[] with base 10: ''
1 để thay thế

Bạn có thể chuyển đổi danh sách chuỗi trong int Python không?

Để chuyển đổi hoặc ép kiểu chuỗi thành số nguyên trong Python, bạn sử dụng hàm tích hợp int[] . Hàm nhận tham số là chuỗi ban đầu bạn muốn chuyển đổi và trả về số nguyên tương đương với giá trị bạn đã truyền.

Làm cách nào để chuyển đổi danh sách float thành int trong Python?

Cách Pythonic nhất để chuyển đổi danh sách số float fs thành danh sách số nguyên là sử dụng một lớp lót fs = [int[x] for x in fs]< . Nó lặp qua tất cả các phần tử trong danh sách fs bằng cách sử dụng khả năng hiểu danh sách và chuyển đổi từng phần tử danh sách x thành một giá trị số nguyên bằng cách sử dụng hàm tạo int[x]. . It iterates over all elements in the list fs using list comprehension and converts each list element x to an integer value using the int[x] constructor.

Tôi có thể chuyển đổi danh sách thành tập hợp không?

Chúng ta có thể chuyển đổi danh sách thành tập hợp bằng cách sử dụng lệnh set[] , trong đó chúng ta phải chèn tên danh sách cần chuyển đổi giữa các dấu ngoặc đơn. Do đó, trong trường hợp trên, chúng ta phải gõ set[the_names] để chuyển các tên có trong danh sách thành một tập hợp.

Bạn có thể chuyển đổi danh sách thành tập hợp trong Python không?

Phương pháp 1. Sử dụng hàm set[] để chuyển đổi danh sách thành tập hợp trong Python . Hàm set[] sẽ giúp chúng ta chuyển đổi một danh sách thành một tập hợp.

Chủ Đề