Wie ist es möglich z.b. nur A:B auszugeben und nicht B:A?
Code: Alles auswählen
>>> data = ['','','']
>>> data = ['A','B','C']
>>> for i in data:
... for j in data:
... if i != j: print(i + ':' + j)
...
A:B
A:C
B:A
B:C
C:A
C:B
>>>
Code: Alles auswählen
>>> data = ['','','']
>>> data = ['A','B','C']
>>> for i in data:
... for j in data:
... if i != j: print(i + ':' + j)
...
A:B
A:C
B:A
B:C
C:A
C:B
>>>
Code: Alles auswählen
In [1]: from itertools import combinations
In [2]: print(*combinations(('A', 'B', 'C'), 2))
('A', 'B') ('A', 'C') ('B', 'C')
Code: Alles auswählen
>>> data = ['','','']
Code: Alles auswählen
, A, B , C
A, 0, A:B, A:C
B, , 0 , B:C
C, , , 0
Indem du zu i und j noch die Indizes nimmst und prüfst ob der Index der Spalte größer ist als der der Zeile.mit hat geschrieben:Momentan i und j beinhalten A, B und C. Woher weis ich dass i und j unterhalb der diagonalen liegt?
Code: Alles auswählen
1 data = ['A','B','C']
2 data_no = len(data)
3 print(', ' + ', '.join(data))
4 for i in range(data_no):
5 print(data[i] + ','),
6 for j in range(data_no):
7 if (i < j): print(data[i]+data[j] + ', '),
8 if (i > j) : print(', '),
9 if (i == j): print(str(0) + ', '),
10 print
Ja, z.B. könntest Du die Zeilennummern entfernen So kann das ja niemand ohne Vorarbeit testen...mit hat geschrieben: Vielleicht ist es moeglich dies zu verbessern.
Code: Alles auswählen
def generate_matrix(data):
yield [""] + data
for y, chary in enumerate(data):
line = [chary]
for x, charx in enumerate(data):
if y < x:
line.append("%s%s" % (chary, charx))
elif x == y:
line.append("0")
else:
line.append("")
yield line
data = ['A','B','C']
matrix = generate_matrix(data)
for line in matrix:
print ", ".join("%2s" % item for item in line)