Belirsiz başlık için özür dilerim, ancak açık bir şekilde açıklamak zor. Yaptığımı düşünüyordumHer dize elemanını bölme ve diziye dahil etmenin en iyi yolu?
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
Tek yön: Ben bu olsun istiyorum itibaren
['a', 'b', 'c\nd', 'e', 'f\ng', 'h', 'i']
:
Temelde, şöyle ben (Python) bir listesi var hayal ,
reduce(lambda x, y: x + y.split('\n'), lst, [])
Ama bu çok etkili olduğunu düşünmüyorum: Bu şöyle reduce
kullanıyordum Çünkü her bir elemanın içinde ayırıcı olduğunu bildiğimiz gerçeğinden yararlanmıyoruz. Baska öneri?
Düzenleme: dizinin nasıl oluşturulduğu hakkında daha fazla bilgi için sorun olabilir.
Ben formda metin var:
Ignorable line
Field name 1|Field name 2|Field name 3|Field name 4
Value 1|Value 2|Value 3|Value 4
Value 1|Value 2|Value 3|Value 4
...
biz alan adlarına bir keyfi miktarda olabilir ve orada olacak her zaman on line alan adları gibi değerlere eşit sayıda. Değerlerde yeni çizgiler olabileceğimizi unutmayın. Sadece biliyoruz ki, bir '|' ile ayrılacaktır. Bu yüzden şu anda bu yüzden kendi dizede kendi dizesinde alan adları ve değerleri almak bir s.split('\n', 2)
yaparak olduğunu yapmak nasıl
Value 1|This is an long
value that extends over multiple
lines|Value 3|Value 4
olabilir. Sonra, değerleri '|' ile ayırarak, orijinal olarak bahsettiğim formun listesini alırız.
... Göründüğü gibi ne yaptığını çok açıktır ki ne yapacağını okunabilirliği feda eden optimize senin n'in 3'den 2'ye değişmesi ... muhtemelen çok hızlı olmasının yanısıra ... aslında değil, ama bu durumda senin darboğaz olduğunu biliyordun.Prematüre optimizasyon tüm kötülüklerin köküdür –
Örnekte \ n her zaman 3. maddeyi izler (c alfabenin 3 harfidir; f 6'dır). Bu formatta ilk listeyi almanıza neden olan şeyin ne olduğunu merak ediyorum. Belki de orijinal listeyi nasıl değiştirdiğini değiştirdiysen kod daha temiz olurdu ... bu kırık bir ayrıştırıcı için bir iş gibi görünüyor. – ramcdougal
@ramcdougal Bu listeyi oluşturmanın en iyi yolu olmayabilir. Gönderiyi bu formda nasıl aldığımla güncelleyeceğim. – mp94