<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_Username" maxReceivedMessageSize="20000000" maxBufferPoolSize="20000000">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" establishSecurityContext="false"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint
binding="wsHttpBinding"
bindingConfiguration="wsHttpBinding_Username"
contract="Exchange.Exweb.ExchangeServices.ExchangeServicesGenericProxy.ExchangeServicesType"
name="ServicesFacadeEndpoint" />
</client>
Когда вы «умножаете» список, он копирует ссылки на объекты, а не на базовые объекты. Таким образом, каждая строка внешнего списка фактически ссылается на один и тот же объект внутреннего списка.
result = [[" "] * 10] * rows
Чтобы создать новый список для каждой строки, вы можете сделать следующее:
result = [[" "] * 10 for _ in range(rows)]
Примечание: использовать xrange
вместо range
при использовании Python 2.
Вот альтернативный способ сделать то, что вы пытаетесь:
def transform(li):
l1 = []
l2 = []
for i, a in enumerate(li):
if i % 2 == 0: l1.append(a)
else: l2.append(a)
return [l1,l2]
Преимущество этого способа состоит в том, что он будет работать для списков любой длины, вместо того, чтобы требовать жесткого кодирования # элементов.
Вы можете использовать нотацию понимания списка , чтобы преобразовать ваш массив в матрицу. Вот так
some_list[start:end:step]
def transform(li):
rows = len(li) // 10
return [li[i:len(li):rows] for i in range(rows)]
arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4']
['A', 'D', 'G', 'J', 'M', 'P', 'S', 'V', 'Y', '2']
['B', 'E', 'H', 'K', 'N', 'Q', 'T', 'W', 'Z', '3']
['C', 'F', 'I', 'L', 'O', 'R', 'U', 'X', '1', '4']
li[i:len(li):rows]
, поэтому давайте объясним, что
i
внутри []
относится к началу подмассива len(i)
является концом подмассива rows
является шагом . Здесь шаг равен числу строк, так как мы хотим перейти на количество строк, чтобы соответствовать ожидаемому результату в вашем вопросе Мы извлекаем подмассив для каждая возможная строка, которая является то, что [... for i in range(rows)]
для