Найти - Пользователи
Полная версия: "А не индийский ли код я написал?" или "Как быстрее/короче и т.д."
Начало » Python для новичков » "А не индийский ли код я написал?" или "Как быстрее/короче и т.д."
1 2 3 4 5
bismigalis
bot1net
Никаких 10005000 == True быть не должно, поскольку 10005000 не принадлежит множеству, над которым введена булева алгебра, всего то

щас тебя вааще порвёт
>>>True+1
2
bot1net
Товарищи, я ни в коем случае не критикую язык, и вообще, как вы уже успели догадаться делаю первые, вероятно не очень правильные шаги, посему и пишу в ветке “Для новичков”
Для чего может понадобиться?
(1 and 3 and 2) == 3
Да, собственно, черт его знает Это действительно можно успешно заменить
 >>>1 == 2 == 3
False
Да и дизъюнкция выглядит вполне естественно
>>> if 1 or 0 or 3 == 0:
...     print 'ok'
...     
ok
Рад, что мне удалось обратить ваше внимание на столь любопытную, на мой взгляд, особенность языка
bot1net
bismigalis, напротив, это выглядит вполне естественно
>>> True + 10
11
Ведь True это элемент булева кольца биективный 1
bismigalis
bot1net
напротив, это выглядит вполне естественно. Ведь True это элемент булева кольца биективный 1
а ну это хорошо что питон не расходится с теорией, а то мне показалось это неестественным :)

bot1net
(1 and 3 and 2) == 3
Да, собственно, черт его знает Это действительно можно успешно заменить
>>>1 == 2 == 3
False

это не одно и то же. я не пойму твоей логики
во втором случае проверяется равенство всех элементо между собой. в первом НЕ сравнивается каждый элемент с 3. Сначала вычисляется выражение в скобках, потом результат сравнивается с 3.
bot1net
bismigalis, если рассуждать следующим образом. Выражение
(1 and 3 and 2) == 3
эквивалентно
if 1 == 3:
  if 3 == 3:
    if 2 == 3:
        print 'Lol'
То есть для того, чтобы напечатать ‘Lol’, достаточно равенства всех элементов выражения тройке. Вроде так… Или перефразируя. Пусть множество А включает 3 элемента, а множество В включает 1 элемент. Для получения булевой 1 необходимо и достаточно, чтобы каждый элемент множества А был в точности равен элементу множества В. Например, мы получим булеву единицу, если напишем “1 и 1 и 1 = 1”. Если ошибаюсь, поправьте
reclosedev
bot1net
Не эквивалентно.
http://docs.python.org/2/library/stdtypes.html#boolean-operations-and-or-not

Грубо говоря, несколько and работают так:
def my_and(*args):
    for arg in args:
        if not arg:
            return arg
    return args[-1]
print my_and(1, 3, 2)  # 2
print my_and(1, 3)  # 3
print my_and(0, 3)  # 0
bismigalis
если ты оперируешь множествами, то в питоне тоже есть множества, называются они set
>>>s1 = set([1])
>>>s2 = set([1,2,3])
>>>s1 & s2
set([1]) #результат пересечения
>>>bool(s1 & s2)
True #пересекаются

bismigalis
bot1net
Для получения булевой 1 необходимо и достаточно, чтобы каждый элемент множества А был в точности равен элементу множества В.Например, мы получим булеву единицу, если напишем “1 и 1 и 1 = 1”.

#python3
>>>s1 = {1, 1, 1}
>>>s2 = {1}
>>>s1 == s2
True # множества равны
>>>bool(s1 and s2)
True # оба множества истинны (не пусты)
bot1net
reclosedev, bismigalis благодарю!
bot1net
С наступающим Первомаем, товарищи!

from numpy import loadtxt
import scipy.stats as ss
x, y = loadtxt('data.txt', delimiter = ',', unpack = True)
reg = ss.linregress(x,y)
string = '''slope %.4f ; intercept %.4f ;
r-value %.4f ; p-value %.4f ;
stderr %.4f .''' %(reg[0],reg[1],reg[2],reg[3],reg[4])
out = open('out.txt','w')
out.write(string)
out.close()

Давеча мне рекомендовали следующее форматирование http://docs.python.org/2/tutorial/inputoutput.html#fancier-output-formatting :

>>> a=[1,2,3,4.44444444444]
>>> "a={0:2d} b={1} c={2} d={3:10.3g}".format(*a)
'a= 1 b=2 c=3 d=      4.44'

Не затруднит ли вас подсказать, что значит эта строка:
>>> "a={0:2d} b={1} c={2} d={3:10.3g}".format(*a)

Заранее благодарю!
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