Seite 1 von 2

Verfasst: Donnerstag 17. Juli 2008, 14:05
von BlackJack
@audax: Ja `compose()` wäre nett. :-)

@da.dom: Also ich find's nicht gruselig, sondern elegant. Funktionale Programmierung rockt! :-)

Verfasst: Mittwoch 13. August 2008, 14:42
von ete
audax hat geschrieben:
ete hat geschrieben:Hallo!

Kann man auch mehrere strings syncron teilen?

a = 20 * 'a'
b = 20 * 'b'

Das ganze soll dann so aussehen:
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb

Code: Alles auswählen

from itertools import izip

def split(s, size):
    return (s[i:i+size] for i in  xrange(0,len(s),size))

a= 'a'*50
b = 'b'*50

print [a+b for a,b in izip(split(a, 7), split(b, 7))]
['aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'aaaaaaabbbbbbb', 'ab']
Du hättest übrigens ruhig einen neuen Thread öffnen können anstatt die Leiche hervorzukramen.
Funktioniert das auch wenn a aus meheren teil strings besteht, also

a = [20 * 'a', 20 * x]
b = 20 * 'b'

wobei es dann so gesplittet werden soll:
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb

Verfasst: Mittwoch 13. August 2008, 20:59
von audax
Drück dich mal bitte genauer aus.

Wie willst du denn

Code: Alles auswählen

a = [20 * 'a', 20 * x]
b = 20 * 'b' 
gemeinsam splitten? Oo
Das eine ist eine Liste mit 2 Elementen, das andere ein String oO

Verfasst: Donnerstag 14. August 2008, 07:52
von ete
a = aaaaaaaaaaaaaaaaaaaa, xxxxxxxxxxxxxxxxxxx
b = bbbbbbbbbbbbbbbbbbb

Nach dem Splitten:

aaaaaaaaa
xxxxxxxxx
bbbbbbbbb
aaaaaaaaa
xxxxxxxxx
bbbbbbbbb

Edit:

Wobei es kein Tuple ist, wie ich gerade sehe:

liste3 = [[10, 11, 12, 15, 16, 17, 18, 19, 20, 21], [19, 20, 21, 22, 23], [20, 21, 22, 23, 24]]

for x in liste3:
print "".join(">" if y in x else "-" for y in range(30))

a = 50*'a'
b = 50*'b'

Soll ergeben:

30 mal a
30 mal b
30 mal alle strings von liste3
Rest von a (also 20)
Rest von b
Rest von allen strings von liste3

Verfasst: Donnerstag 14. August 2008, 09:07
von audax
30 mal alle strings von liste3
Häh?
Das sind keine Strings sondern Listen von Zahlen Oo

Mach doch mal nen konkretes Beispiel, mit kompletten Angaben,[/code]

Verfasst: Donnerstag 14. August 2008, 09:41
von ete

Code: Alles auswählen

liste3 = [[10, 11, 12, 15, 16, 17, 18, 19, 20, 21], [19, 20, 21, 22, 23], [20, 21, 22, 23, 24]]

for x in liste3:
    print "".join(">" if y in x else "-" for y in range(30))
ergibt:

---------->>>-->>>>>>>--------
------------------->>>>>------
-------------------->>>>>-----

zusätzlich gibt es noch 2 weiter strings:

string1 = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
string2 = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Es soll so gesplittet werden (nach 20 chars):

string1
string2
alle strings von liste3

aaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbb
---------->>>-->>>>>
------------------->
--------------------
aaaaaaaaaa
bbbbbbbbbb
>>--------
>>>>------
>>>>>-----

Ich hoffe das war verständlich.