[PYTHON] Private Memos für Listenoperationen und Wettbewerbsprogramme

Wenn Sie es bemerken, können Sie den Artikel hier hinzufügen oder aktualisieren. http://qiita.com/clarinet758/items/5135a8075001a3b6782b liegt in Trümmern.

Saiten in umgekehrter Reihenfolge

a='abcdef'
a[::-1]
'fedcba'

Geplant für Listen, Sets, Karten usw.

aufführen

Machen Sie viele leere Listen l=[[] for x in xrange(n)]

Vertikal und horizontal drehen. B. Originalzeichenkette 8 vertikal 8 8 horizontal abcdefgh ijklmlop qrstuvwx yzABCDEF GHIJKLMN OPQRSTUV WXYZ1234 567890!?

tateyoko.py


#In diesem Fall a,b ist 8 für beide
(a,b)=map(int, raw_input().split())
x=[sys.stdin.readline().strip() for x in range(a)]
print x
#['abcdefgh', 'ijklmlop', 'qrstuvwx', 'yzABCDEF', 'GHIJKLMN', 'OPQRSTUV', 'WXYZ1234', '567890!?']

chikan=[[] for i in range(8)]
#X in der ursprünglichen Liste[0]Lesen Sie aus
for a in range(8):
#Initialisieren Sie die Liste der temporären Speicher
    tate=[]
#Leck das b-te Element in Spalte a
    for b in range(8):
        tate.append(x[b][a])
#Kombinieren Sie die verschiedenen Zeichen nacheinander und fügen Sie sie zur offiziellen Speicherung in die Liste ein
    tate1=''.join(tate)
    chikan[a]=tate1
print chikan
#['aiqyGOW5', 'bjrzHPX6', 'cksAIQY7', 'dltBJRZ8', 'emuCKS19', 'flvDLT20', 'gowEMU3!', 'hpxFNV4?']

Gehen Sie zwischen Zeichenfolgen und Listen hin und her

Listenoperation


#Für Saiten
orig = "hello"
li   = list(orig)   #String=>aufführen
text = "".join(li)  #aufführen=>String
print li    # ['h', 'e', 'l', 'l', 'o']
print text  # hello


#Für eine Reihe von Zahlen
nums = [1,2,3,4,5]
text = "".join(map(str, nums))  #aufführen=>String
li   = list(map(int, text))     #String=>aufführen
print li    # [1, 2, 3, 4, 5]
print text  # 12345

#Es scheint, dass es schneller ist, die Einschlussnotation für die Liste aus der Zeichenfolge zu verwenden
#Reflektieren Sie die erhaltenen Kommentare und überprüfen Sie, wie Sie sie verwenden
text='12345'
li = [int(i) for i in text]
#[1, 2, 3, 4, 5]

Liste sortieren

sort.py


#Nach aufsteigender Reihenfolge sortieren()Wird genutzt.
>>> m = [1, 18, 2, 117, 205]
>>> m.sort()
# x = m.sort()Auch wenn Sie schreiben, verlassen Sie die ursprüngliche Liste,
#x kann keine sortierte Liste sein.
>>> m
[1, 2, 18, 117, 205]


#In absteigender Reihenfolge einmal sortieren()Dann rückwärts()Wird genutzt.
>>> n = [1, 18, 2, 117, 205]
>>> n.reverse()
>>> n
[205, 117, 2, 18, 1]
# reverse()Tun Sie es einfach, um die ursprüngliche Liste umzukehren.
#Also in aufsteigender Reihenfolge sortieren und dann umkehren.
>>> n.sort()
>>> n.reverse()
>>> n
[205, 117, 18, 2, 1]

Liste y=Seien Sie vorsichtig beim Umgang mit x


>>> x=[1,6,3,8,4]
>>> y=x
>>> y
[1, 6, 3, 8, 4]
>>> x
[1, 6, 3, 8, 4]
>>> y.sort()
>>> y
[1, 3, 4, 6, 8]
>>> x
[1, 3, 4, 6, 8]
>>> y[1]=y[1]+1
>>> y
[1, 4, 4, 6, 8]
>>> x
[1, 4, 4, 6, 8]

>>> x=[1,2,3,4,5]
>>> y=x[:]
>>> x
[1, 2, 3, 4, 5]
>>> y
[1, 2, 3, 4, 5]
>>> y[1]+=3
>>> y
[1, 5, 3, 4, 5]
>>> x
[1, 2, 3, 4, 5]

Die ursprüngliche Liste bleibt nicht für sort () und reverse () übrig. .. Wenn Sie die ursprüngliche Liste benötigen

Teil 2 sortieren


#Sei x die ursprüngliche Liste und y das Sortierziel
>>> x=[3,55,6,3,71,8,1]
>>> y=sorted(x)
>>> y
[1, 3, 3, 6, 8, 55, 71]
>>> y=reversed(x)
>>> y
<listreverseiterator object at 0x109144c10>
>>> y=x[::-1]
>>> y
[1, 8, 71, 3, 6, 55, 3]
>>> y=reversed(x)
>>> y[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'listreverseiterator' object is not subscriptable
>>> for i in y:
...   print i
... 
1
8
71
3
6
55
3

Es scheint, dass Sie vorsichtig sein müssen, da reverse () ein mysteriöses Verhalten ist.

Was sind die Elemente in der Liste von c?

Zählen Sie die Anzahl und stellen Sie das Maximum / Minimum ein


#1 in c,2,3,Zähle die Zahl von 4(p)Zählen Sie mit
#Zur leeren Liste hinzufügen l mit Anhängen.
#max(l),min(l)Für Maximal- und Minimalwerte
l,p=[],1
c=[1, 2, 3, 4, 1, 2, 3]
for i in xrange(4):
    l.append(int(c.count(p)))
    p+=1
print max(l),min(l)

#Es scheint, dass die Einschlussnotation gut für die Anzahl der Elemente ist, also drucken Sie sie erneut
c = [1, 2, 3, 4, 1, 2, 3]
l = [c.count(i) for i in xrange(4)]
print max(l), min(l)

Was für ein Wörterbuch für die Elemente in der Liste


i=['A','A','C','C','A','B']
h={"A":4,"B":3,"C":2,"D":1,"F":0}
for x in enumerate(i): f+=h[x[1]]

↑ Ein ordentlicher Code, den ich nicht verstehe, warum ich bestanden habe. Es zählt immer noch die Punkte, die ABC in der Liste von i zugewiesen wurden.

Unterschiede zwischen Listenelementen? nehmen

Listenunterschied


a=['a','b','c','d',1,2,'3','4']
b=['c','d','1',2,3]
#Liste der Personen, die verlassen werden sollen-Liste der zu löschenden Kandidaten, Liste der eingeschriebenen Personen-Liste der Migranten=Wie der letzte Teilnehmer
#Die Reihenfolge der Liste ist fehlerhaft.
l=set(a)-set(b)
l
set(['a', 1, '3', 'b', '4'])
sabun=list(l)
sabun
['a', 1, '3', 'b', '4']

Listenverknüpfung


a=[1,2,3]
b=['4','5','6']
c=a+b
#Es scheint kein Problem zu geben, selbst wenn str-Typ und int-Typ gemischt sind

Doppelte Operation auflisten

Für die Deduplizierung ist der Set-Typ schneller als der Listentyp, und es können logische Ausdrücke verwendet werden, was praktisch ist. Verwenden wir den Set-Typ.

Typ einstellen

Ein festgelegtes Objekt ist eine Sammlung ungeordneter hashbarer Objekte. Häufige Anwendungen sind das Testen der Mitgliedschaft, das Entfernen von Duplikaten aus einer Folge von Zahlen und das Berechnen mathematischer Operationen wie logischer Produkte, logischer Summen, Differenzmengen und symmetrischer Differenzen. Es scheint.

Bedienung des Sets, das ich ausprobiert habe oder zu verwenden scheint


{raw_input()}
123
#set(['123'])

{int(raw_input())}
345
#set([345])

#Durch Leerzeichen getrennt
set(raw_input().split())
#Ich kann, aber

set(int, raw_input().split())
set(input().split())
#Ist nicht gut

Verschiedene überlappende Elemente aus den beiden Listen


#Bei Verwendung von Set
a=[1,2,3,1,2,3]
b=[1,4,5]

set(x)&set(y)
#set([1])
#a,Es scheint, dass nur die Elemente extrahiert werden, die in b dupliziert sind
#Die Vervielfältigung in a und b scheint zu verschwinden

set(x)|set(y)
#set([1, 2, 3, 4, 5])
#Die Duplizierung in a und b verschwindet und alle Elemente werden eins

set(x)^set(y)
#set([2, 3, 4, 5])
#Die Vervielfältigung in a und b scheint zu verschwinden
#Es war nur in a, es war nur in b, aber es verbindet sich

#Die Anzahl der Elemente ist len(set(x)&set(y))Usw. kann mit len genommen werden.

#Duplikate im Set verschwinden, wenn der Set-Typ verwendet wird.
#Es scheint, dass die Existenz doppelter Elemente in der Menge gelöscht wird. einstellen(raw_input())
23432
# set(['3', '2', '4'])
set(raw_input())
asdfgfdsa
# set(['a', 's', 'd', 'g', 'f'])
#Notation, die möglich war
#set(raw_input().split())Alle Inhalte sind str, durch Leerzeichen getrennt

#Bei Verwendung von group by
#nächstes Mal

Wenn set nicht verwendet werden kann


#Ist es möglich, eine Zeichenfolge für die untere Zeile mit den Zeichen für die obere Zeile nacheinander zu erstellen? Wann
Instead of dogging Your footsteps it disappears but you dont notice anything
Your dog is upstears

s=list(raw_input())+[' ']*200
try: 
  map(s.remove,raw_input())
  print 'YES'
except:
  print 'NO'

Elemente in der Liste löschen

・ Geben Sie die Position und Reihenfolge der Liste an risuto=['a','b','c'] del risuto[i] Das i-te Risuto verschwindet

・ Nach Element angeben risuto=['haru','natsu','aki',huyu'] risuto.remove('huyu') Dies wird Huyu verschwinden lassen

・ Löschen Sie das Ende risuto=['haru','natsu','aki',huyu'] risuto.pop() Dadurch wird das nachfolgende Huyu entfernt

Listeneinschluss für Aussage tt = [ x+y for x in "abxy" for y in "abxy" ]

Zählen Sie eine bestimmte Zeichenfolge

count.py


>>> x = 'aaaabbaaabaaa'
>>> x
'aaaabbaaabaaa'
>>> x.count('aa')
4
# 1,Das zweite Zeichen ist'aa'2 wenn gezählt als,3. Zeichen'aa'Ist
#Es scheint, dass es nicht gezählt wird.

>>> x.count('a')
10

Zählen Sie die Anzahl der Übereinstimmungen

count.py


>>> import re

>>> x = 'aaaabbaaabaaaba'
>>> i = 0
# +Zählt ein oder mehrere aufeinanderfolgende Zeichen unmittelbar zuvor.
>>> for m in re.finditer('a+', x):
...    i += 1
... 
>>> i
4

>>> re.findall('a+', x)
['aaaa', 'aaa', 'aaa', 'a']
#Passende Teile werden im Listenformat extrahiert
# len(re.findall('a+', x))Um die Anzahl der Elemente in der Liste zu erhalten
#Es scheint gleichbedeutend mit der Anzahl der Übereinstimmungen zu sein.

# re.re als findall.Finditer scheint Speicher zu sparen.
>>> i = 0
>>> for m in re.finditer('a+', x):
...    i += 1
... 
>>> i
4

Referenzseite http://lightson.dip.jp/zope/ZWiki 2013/11/14 Ich hätte über die Syntax-Highlights Bescheid wissen müssen, also war es eine völlige Auslassung. .. .. Vielen Dank für Ihre Bearbeitungsanfrage.

Recommended Posts

Private Memos für Listenoperationen und Wettbewerbsprogramme
[Zusammenfassung der Bücher und Online-Kurse für Programmierung und datenwissenschaftliches Lernen]
[Wettbewerbsprogrammierung] [Python3] Notwendiges Wissen für sich
Holen Sie sich alle Standardeingaben, die in der Paiza- und Wettbewerbsprogrammierung verwendet werden, mit int (Python)
Liste häufig verwendeter integrierter Funktionen und Methoden
[Python / Chrome] Grundeinstellungen und Operationen zum Scraping
Programm zur vollständigen Suche nach Sequenzen (zur Wettbewerbsprogrammierung)
[Für Anfänger] Wie man Programmierung studiert Private Memo
[Python] Erstellen einer Umgebung für die Wettbewerbsprogrammierung mit Atom (input () kann verwendet werden!) [Mac]