2012-04-27 97 views
12

Làm cách nào để chuyển đổi đầu vào số nguyên được phân cách bằng dấu cách vào danh sách số nguyên?chuyển đổi danh sách chuỗi thành danh sách số nguyên

Ví dụ đầu vào:

list1 = list(input("Enter the unfriendly numbers: ")) 

Ví dụ chuyển đổi:

['1', '2', '3', '4', '5'] to [1, 2, 3, 4, 5] 
+0

có thể trùng lặp của [Chuyển đổi tất cả các chuỗi trong một danh sách để int] (http://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-int) –

Trả lời

31

map() là bạn của bạn, nó áp dụng những chức năng nhất định như là đối số đầu tiên cho tất cả các mục trong danh sách.

map(int, yourlist) 

vì nó ánh xạ mỗi iterable, thậm chí bạn có thể làm:

map(int, input("Enter the unfriendly numbers: ")) 

mà (trong python3.x) trả về một đối tượng bản đồ, có thể được chuyển đổi sang một danh sách. Tôi cho rằng bạn đang sử dụng python3, vì bạn đã sử dụng input, không phải raw_input.

+1

+ 1 nhưng bạn có nghĩa là 'map (int, yourlist)'? –

+0

tất nhiên, đã được chỉnh sửa. – ch3ka

+0

bạn có nghĩa là 'bản đồ (int, input(). Split())', hay không py3k tự động chuyển đổi đầu vào được phân tách bằng dấu cách thành một danh sách? – quodlibetor

1

Bạn có thể thử:

x = [int(n) for n in x] 
+2

Điều này không hoạt động. 'int' không phải là một phương thức trên chuỗi. –

+0

Xin lỗi tôi đã chỉnh sửa nó ... Đây thực sự là những gì tôi có ý nghĩa :) – Silviu

+0

Nó không sai, nhưng tôi thường sẽ không tái sử dụng 'x' như thế. –

14

Một cách là sử dụng danh sách comprehensions:

intlist = [int(x) for x in stringlist] 
+0

+1, '[int (x) cho x trong đầu vào(). Split()]' để phù hợp với thông số kỹ thuật của OP. – georg

-2

Chỉ cần tò mò về cách bạn có '1', '2', '3', ' 4 'thay vì 1, 2, 3, 4. Dù sao đi nữa.

>>> list1 = list(input("Enter the unfriendly numbers: ")) 
Enter the unfriendly numbers: 1, 2, 3, 4 
>>> list1 = list(input("Enter the unfriendly numbers: ")) 
Enter the unfriendly numbers: [1, 2, 3, 4] 
>>> list1 
[1, 2, 3, 4] 
>>> list1 = list(input("Enter the unfriendly numbers: ")) 
Enter the unfriendly numbers: '1234' 
>>> list1 = list(input("Enter the unfriendly numbers: ")) 
Enter the unfriendly numbers: '1', '2', '3', '4' 
>>> list1 
['1', '2', '3', '4'] 

Alright, một số mã

>>> list1 = input("Enter the unfriendly numbers: ") 
Enter the unfriendly numbers: map(int, ['1', '2', '3', '4']) 
>>> list1 
[1, 2, 3, 4] 
3

công trình này:

nums = [int(x) for x in intstringlist] 
0
l=['1','2','3','4','5'] 

for i in range(0,len(l)): 
    l[i]=int(l[i]) 
+0

Sự can thiệp của bạn bị hỏng. –

1

Giả sử có một danh sách các chuỗi tên list_of_strings và đầu ra là danh sách các số nguyên tên list_of_int. Bản đồ là hàm python tích hợp có thể được sử dụng cho thao tác này.

'''Python 2.7''' 
list_of_strings = ['11','12','13'] 
list_of_int = map(int,list_of_strings) 
print list_of_int 
Các vấn đề liên quan