我正在练习在 python 中使用生成器函数,所以我定义了一个函数,如下所示:
def MySQL_product():
#Establish connection to database
try:
connection = msql.connect(host = 'localhost', user = 'max', passwd = 'password', db = 'schools')
except:
pass
#Iterate through each product and insert them in database
with connection:
cursor = connection.cursor()
cursor.execute("SELECT name, age, gender, school
WHERE GroupId = 'student' AND Exchange = 'foreign'")
for product in cursor.fetchall():
yield product
def main():
for column in range (0, number_of_schools):
for product in MySQL_product():
print product
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我看到的所有输出都是generator object at ...我试图打印在数据库中找到的内容。此外,print …
如何制作随机颜色生成器,但只使用我为程序选择的 5 种颜色。我正在做一个优先系统,它使用颜色来归因于医院的每个病人。
提前致谢。
我正在生成密码random_int,但我注意到一些奇怪的东西.有时(纯粹随机),它会生成小于最小值的密码.例如,我设置10和15限制,每一次大约50-70尝试它弹出一个2-3字符长密码.我的脚本有问题吗?重现输出很难,只需刷新脚本直到得到类似的结果.
<?php
$r_number = random_int( 10 , 15 );
function random_str(
$length,
$keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,./<>?;:"|[]{}-=_+`~!@#$%^&*'
) {
$str = '';
$max = mb_strlen($keyspace, '8bit') - 1;
if ($max < 1) {
throw new Exception('$keyspace must be at least two characters long');
}
for ($i = 0; $i < $length; ++$i) {
$str .= $keyspace[random_int(0, $max)];
}
return $str;
}
$password = random_str($r_number);
echo $password;
?>
Run Code Online (Sandbox Code Playgroud) 我需要为排序算法制作一个大的测试文件.为此,我需要生成1000万个随机字符串.我怎么做?我尝试在/ dev/urandom上使用cat,但它会持续几分钟,当我查看文件时,只有大约8页的字符串.如何在bash中生成1000万个字符串?字符串长度应为10个字符.
发电机一旦使用过一次,就无法再次使用。为什么是这样?
考虑以下代码:
def generator(n):
a = 1
for _ in range(n):
yield a
a += 1
def run_generator(generator):
for a in generator:
print(a, end = " ")
Run Code Online (Sandbox Code Playgroud)
如果我要执行这个:
count_generator = generator(10)
run_generator(count_generator)
run_generator(count_generator)
Run Code Online (Sandbox Code Playgroud)
它只会打印:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
基本上,生成器在执行一次后就会死亡。
我知道生成器只能使用一次这一事实是 Python 内置的东西,但为什么会这样呢?是否有特定原因只允许生成器对象执行一次?
using System;
namespace npcnames
{
class Program
{
static string RandomVowel()
{
Random rand = new Random();
string[] Vowels = new string[5] { "a", "e", "i", "o", "u" };
int index = rand.Next(Vowels.Length);
string Vowel = Vowels[index];
return Vowel;
}
static string RandomConsonant()
{
Random rand = new Random();
string[] Consonants = new string[21] { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" };
int index = …Run Code Online (Sandbox Code Playgroud) def gen():
try:
yield 1
yield 2
except:
print('hi')
def func():
for x in gen():
return x
print(func())
Run Code Online (Sandbox Code Playgroud)
此代码打印hi然后打印1。为什么它不直接打印1?提出了什么例外?
创建一个简单的字典:
procinfos = {"f1": f1, "f2": f2, "f3shell" : (wrap_for_process, q, f3shell, "input arg1", "input arg2")}
Run Code Online (Sandbox Code Playgroud)
然后我想打印其内容:
print (procinfo for procinfo in procinfos)
<generator object <genexpr> at 0x7f46dccc0dc0>
Run Code Online (Sandbox Code Playgroud)
为什么python只告诉我这是一个生成器?我怎样才能简单地打印内容.从我读到的关于生成器的内容来看,它们不打算使用dict/list.但这已经是一个完全具体化的系列 - 对我来说没有任何意义(至少对我来说......)而不是简单地打印它.这是常见的用例,会欣赏一种获取这些集合的基本打印的简洁方法.谢谢.
更新:我想要一行/内联,而不是多行.谢谢.
我有一个元组生成器,我需要删除包含相同元素的元组。我需要此输出进行迭代。
Input = ((1, 1), (1, 2), (1, 3), (3, 1), (3, 2), (3, 3))
Output= ((1, 1), (1, 2), (1, 3))
Run Code Online (Sandbox Code Playgroud)
输出顺序无关紧要。
我已经检查了这个问题,但是它与列表有关:删除嵌套列表Python中具有相同元素的重复元组
我使用生成器来获得最快的结果,因为数据非常大。
我写了一个小名字发生器.我总是用计数5测试它(给我一个带5个字母的名字^^)现在问题是程序给我带来了相同的5个字母.像GGGGG或HHHHH.神奇的是,如果我一步一步地使用调试器,它就必须如此工作.
今天我在手机上,但我试着明天把代码带到这里.也许有人可以在没有代码的情况下帮助我.
问候蜜蜂