Jak mogę rozpowszechnić wynik listy utworzonej w Pythonie w moim notatniku

Nov 20 2020

Próbowałem rozwiązać problem, który się pojawiał, ponieważ moje IDE nie mogło zachować sekwencji liczb, ponieważ funkcja zakresu działa tak.

I zadałem poprzednie pytanie na ten temat, więc jest to kontynuacja pytania. Oto komentarz mojej listy do poprzedniego pytania.

Właściwie wprowadziłem pewne poprawki, dodając linię; „My_list = list (range (100)) przed zastosowaniem kodu, więc faktycznie zadziałało. Ale łączy odpowiedzi bez przecinków, na przykład 10 robi to „0123456789” zamiast „0,1,2,3,4,5, ..... 8,9”. jakieś sugestie?

Postanowiłem opublikować to pytanie, aby drugie pytanie nie wyszło z kontekstu (tak jak mi doradzono).

Jakieś sugestie?

Odpowiedzi

JorgeGuimaraes Nov 22 2020 at 15:58

Musisz zrozumieć, jak działają łańcuchy znaków w Pythonie.

Łańcuchy to stałe (literały) przechowywane w zamkniętym wiadrze. W oficjalnych dokumentach można znaleźć, że „Ciągi znaków są niezmiennymi sekwencjami punktów kodowych Unicode”.

Ale programiści muszą zmieniać lub manipulować tekstem w programowalny sposób. W twoim przypadku chcesz:

„[x1] [spacja] [przecinek] [x2] [przecinek] ... [xn] [spacja] [przecinek]”, gdzie „xn” to liczba, a „,” jest stałą.

Aby to osiągnąć, w sposób programowalny, programiści mogą używać „masek”, aby poinformować oprogramowanie, gdzie chcą wprowadzić zmiany. Można użyć operatorów formatu ciągów :

"%d , %f" %(my_first_integer, my_float)
[0][1][2][3][4][\0]
# Hey Python, return a string, using the above template, 
# but place useful stuff where you find magic keywords.

Co znaczy:

  • Utwórz sekwencję 6 pozycji;
  • W [0] umieść my_integer typu intprzekonwertowanego na chr;
  • W [1] skopiuj „”;
  • W [2] skopiuj „,”.
  • W [3] skopiuj „”;
  • W [4] umieść my_float typu floatprzekonwertowanego na chr;
  • W [5] umieść „\ 0”, aby ciąg się skończył. (Automatycznie umieszczane w Pythonie)

Są na to inne sposoby, np. Obiekt string ma przydatną metodę wywoływaną formatdo obsługi tej konstrukcji:

my_integer = 2
my_string = "{0}*pi = {1}".format(my_integer, my_integer*3.14)
print(my_string)

# 2*pi = 6.28

Programista osiągnie ten sam wynik końcowy, używając jednej lub drugiej strategii.

W Pythonie, podobnie jak w innych językach, można łączyć łańcuchy, konkatenować, pobierać podciągi i tak dalej, używając określonych metod i / lub operatorów.

Aby zachować czytelność, być może (chyba) chcesz umieścić każdą wartość w linii. W łańcuchach możesz używać znaków specjalnych, takich jak \ndla nowych linii .

my_list = list(range(100))

# ... useful code here and there ...

with open("output.txt", "w") as o:
    o.write("My list:\n")
    o.write("\tSize: {0}\n\n".format(len(my_list)))
    o.write("\t----start----\n")
    for i in range(len(my_list)):
        o.write("%d\n" % my_list[i])
    o.write("\n\t----end----\n")

# That writes:
# My list:
#     Size: 100
#
#     ----start----
# 0
# 1
# 2
# 3
...
# 99
#
#    ----end----

Pamiętaj, że nie jest to obszerny przewodnik, ale dla laika. Pomijam wiele nudnych słów i szczegółów technicznych, które lepiej znajdziesz w książkach i kursach Pythona.

molfo Nov 20 2020 at 19:57

Po wydrukowaniu każdej liczby wystarczy wstawić przecinek:

my_list = list(range(100))

with open("output.txt", "w") as o:
    for i in range(len(my_list)):
        o.write("%d," % my_list[i]) # Here, after '%d' you can place a comma, or any text you want