Найти - Пользователи
Полная версия: Вопрос по двумерным массивам
Начало » Python для новичков » Вопрос по двумерным массивам
1
HardDancer
Привет!
Встрял с решением)
Есть список из n - элементов например требуется получить на выходе списки следующего вида




Формируем списки по условия вхождения элемента если следующий элемент в ряде повторяется то добавляется в список если нет то создается новый список
/////Есть код на PHP аналогичный
$input_array = array(0, 0, 1, 1, 1, 0);

$result = ;
$index = 0;
$processedElement = null;
foreach ($input_array as $currentElement) {
if ($processedElement != $currentElement) {
$index++;
}
$result = $currentElement;
$processedElement = $currentElement;
}
print_r($result);
//////////

В моем варинте уходит за границы массива
input_array = ;

result = *len(input_array)
index = 0;
prev = None;
for val in input_array:
if prev != val:
index += 1
result.append()
prev = val
print(result)
py.user.next
Выложи и свой PHP'шный код и свой питоновский код в тегах кода
[code]
Здесь пиши PHP'шный код
[/code]
[code]
Здесь пиши питоновский код
[/code]
HardDancer
$input_array = array(45,21,45,45,21);

$result = ;
$index = 0;
$processedElement = null;
foreach ($input_array as $currentElement) {
if ($processedElement != $currentElement) {
$index++;
}
$result = $currentElement;
$processedElement = $currentElement;
}
print_r($result);

input_array =[45,21,45,45,21] ;
result = []*len(input_array)
index = 0;
prev = None;
for val in input_array:
if prev != val:
index += 1
result[index].append([val])
prev = val
print(result)
ZerG
не совсем понятно условие что дожно быть в результате?
py.user.next
HardDancer, код ты правильно передал, но сам код неправильный. Вставь код оттуда, где он у тебя хранится в компьютере. Прямо из файлов в компьютере копируй на форум.

Вот ты записал, например
HardDancer
$result = ;
Это ничего не значит, у тебя в файле там что-то другое записано.
xam1816
  
lst = [1, 2, 2, 3, 4, 4, 5]
repeating_items = []
single_items = []
temp_dict = {}
for i in lst:
    temp_dict.setdefault(i, 0)
    temp_dict[i] += 1
for k, v in temp_dict.items():
    if v == 1:
        single_items.append([k])
    else:
        repeating_items.append(k)
print(repeating_items)
print(single_items)
HardDancer
$input_array = array('45', '21', '45', '45', '45', '29', '35', '35', '21');

$result = [];
$index = 0;
$processedElement = null;
foreach ($input_array as $currentElement) {
if ($processedElement != $currentElement) {
$index++;
}
$result[$index][] = $currentElement;
$processedElement = $currentElement;
}
print_r($result);

Output:
Array
(
=> Array
(
=> 45
)
=> Array
(
=> 21
)
=> Array
(
=> 45
=> 45
=> 45
)
=> Array
(
=> 29
)
=> Array
(
=> 35
=> 35
)
=> Array
(
=> 21
)
)
py.user.next
Исходный пример на PHP
<?php

$input_array = array('45', '21', '45', '45', '45', '29', '35', '35', '21');

$result = [];
$index = 0;
$processedElement = null;
foreach ($input_array as $currentElement) {
if ($processedElement != $currentElement) {
$index++;
}
$result[$index][] = $currentElement;
$processedElement = $currentElement;
}
print_r($result);

?>
Вывод
[guest@localhost php]$ php t.php 
Array
(
[1] => Array
(
[0] => 45
)

[2] => Array
(
[0] => 21
)

[3] => Array
(
[0] => 45
[1] => 45
[2] => 45
)

[4] => Array
(
[0] => 29
)

[5] => Array
(
[0] => 35
[1] => 35
)

[6] => Array
(
[0] => 21
)

)
[guest@localhost php]$

Аналог на питоне
  
#!/usr/bin/env python3
 
lst = [45, 21, 45, 45, 45, 29, 35, 35, 21]
 
out = []
prev = None
for cur in lst:
    if cur != prev:
        out.append([cur])
    else:
        out[-1].append(cur)
    prev = cur
 
print(out)
Вывод
[guest@localhost php]$ python3 t.py 
[[45], [21], [45, 45, 45], [29], [35, 35], [21]]
[guest@localhost php]$
HardDancer
Супер, спс до этого никак не мог дойти: out.append(cur)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB