Próbuję użyć listy ciągów znaków, z których niektóre są powtarzane. Ale wydaje mi się, że nie mam odpowiedniego poziomu zagnieżdżenia ciągów, którego potrzebuję.
Wciąż jestem nowicjuszem w Pythonie i jestem zdezorientowany. czytam ta odpowiedź i próbowali go zaimplementować, ale czy listy łańcuchów są jakoś specjalnym przypadkiem, który zachowuje się inaczej niż listy innych typów?
Jeśli biegnę:
old_freestream_headings="area,MM static pressure,MM relative mach number,"
old_integral_headings="dp,Impulse:0,Impulse:1,Impulse:2,"
old_forces_headings=("pressure force vector:0,pressure force vector:1,pressure force vector:2,"
"viscous force vector:0,viscous force vector:1,viscous force vector:2,")
old_headings=[old_freestream_headings*2,old_integral_headings,old_forces_headings*5]
print(filter(None,old_headings[0].split(",")))
W rezultacie otrzymuję:
["area", "MM static pressure", "MM relative mach number", "area", "MM static pressure", "MM relative mach number"]
który jest obie kopie pierwszego ciągu.
Jeśli zamiast tego uruchomię:
old_freestream_headings="area,MM static pressure,MM relative mach number,"
old_integral_headings="dp,Impulse:0,Impulse:1,Impulse:2,"
old_forces_headings=("pressure force vector:0,pressure force vector:1,pressure force vector:2,"
"viscous force vector:0,viscous force vector:1,viscous force vector:2,")
old_headings=[[old_freestream_headings]*2,old_integral_headings,[old_forces_headings]*5]
print(filter(None,old_headings[0].split(",")))
Pojawia się błąd:
AttributeError: "list" object has no attribute "split"
ponieważ nie dzielę już ciągu znaków, ponieważ old_headings [0] jest teraz listą dwóch ciągów znaków.
Wyjście, które chciałbym uzyskać, to
["area", "MM static pressure", "MM relative mach number"]
to znaczy zastosuj podział tylko do jednej kopii ciągu.
Co ja robię źle?
Odpowiedzi:
1 dla odpowiedzi № 1Myślę, że masz na myśli dodawanie list razem
old_headings = [old_freestream_headings] * 2 + [old_integral_headings] + [old_forces_headings] * 5