Python

2010-01-30 36 views
6

'daki ints listelerinin listesini listeleyen dizelerden oluşan liste listesinden döküm Bir TSP-esque problemi için kullanacağım xy koordinatlarını temsil eden bir veri kaynağından bazı rakamlar okuyorum. Python için yeniyim, bu yüzden listelerin çoğunu yapmaya çalışıyorum. okuma ve verileri üzerinden ayrıştırma sonra şöyle dize listelerin listesi ile kaldım:Python

[['565.0', '575.0'], ['1215.0', '245.0'], ...yougetthepoint... ['1740.0', '245.0']]

Daha doğrusu tamsayı noktaları ile ilgili olacaktır. Dizeleri içeren bu listeleri ints içeren listelere nasıl dönüştürebilirim?

ValueError: invalid literal for int() with base 10: '565.0'

ondalık sorunlarına neden gibi görünüyor: Ben bu hatayı olsun Onlar, güzel döküm gibi görünüyor yoktur.

+1

Lütfen bu "döküm" adını vermeyin. Python "döküm" kullanmaz. Sorunuz, Java veya C++’da göründüğü şekliyle "yayınlama" ile ilgili değildir. Sorunuz, verilerin dize ile kayan arasındaki basit dönüşümüyle ilgilidir. –

+0

@S. Lott, "dizinin floattan float'a basit bir şekilde dönüştürülmesi" nasıl yapılmaz? Terminoloji bir yana, aynı şeyi yapıyor .. – Chris

+1

S. Lott doğru. Bir string nesnesinden bir float nesnesi oluşturuyorsunuz. Statik olarak yazılan dillerdeki "Döküm", yeni bir nesne oluşturmaz, aynı nesneyi farklı bir türle yeniden yorumlar ve orijinal nesne silinirse, yayın da budur. Python'da, s = "123.4" dizgisini tanımlarım, sonra yüzer (ler) i orijinal dizgiden bağımsız olarak tamamen yeni bir nesne oluşturur. Python'da yaptığınız şey, oyuncularla aynı şey değildir. – PaulMcG

cevap

10
x = [['565.0', '575.0'], ['1215.0', '245.0'], ['1740.0', '245.0']] 
x = [[int(float(j)) for j in i] for i in x] 
+0

ValueError: Float geçersiz değer():. <- hmm .. – Chris

+0

Hangi kırık jeneratör sadece bir dönem üretti? –

+0

Hiçbiri sadece dönem değil. Bu meraklı olan şey. Metin arkadaşının içinden koşuyor. – Chris