map
не является особенно питоническим. Я бы рекомендовал вместо этого использовать списки:
map(f, iterable)
в основном эквивалентен:
[f(x) for x in iterable]
map
сам по себе не может декартово произведение, так как длина его выходного списка всегда совпадает с его списком ввода. Вы можете тривиально сделать декартово произведение с пониманием списка:
[(a, b) for a in iterable_a for b in iterable_b]
Синтаксис немного запутанный - это в основном эквивалентно:
result = []
for a in iterable_a:
for b in iterable_b:
result.append((a, b))
Вы захотите GetComputerName Win32:
http://msdn.microsoft.com/en-us/library/ms724295 (По сравнению с 85) .aspx
Существует больше чем одна альтернатива:
a. Используйте GetComputerName Win32 (), как предложил Stu.
Пример: http://www.techbytes.ca/techbyte97.html
ИЛИ
b. Используйте функцию gethostname () под Winsock. Эта функция является кросс-платформенной и может помочь, если Ваше приложение будет работавшим другие платформы помимо Windows.
Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms738527 (по сравнению с 85) .aspx
ИЛИ
c. Используйте функцию getaddrinfo ().
Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms738520 (По сравнению с 85) .aspx
Я согласовываю с Паскалем при использовании gethostname winsock () функцию.Вот:
#include <winsock2.h> //of course this is the way to go on windows only
#pragma comment(lib, "Ws2_32.lib")
void GetHostName(std::string& host_name)
{
WSAData wsa_data;
int ret_code;
char buf[MAX_PATH];
WSAStartup(MAKEWORD(1, 1), &wsa_data);
ret_code = gethostname(buf, MAX_PATH);
if (ret_code == SOCKET_ERROR)
host_name = "unknown";
else
host_name = buf;
WSACleanup();
}