12345ab 发表于 2022-6-15 16:38:10

随机将一字符串/列表的元素移到另一对象中后

本帖最后由 12345ab 于 2022-6-16 17:20 编辑

例子:

a,b= 'abc','123'
move(a,b)
print(a,b)

输出可以是:ab 123c
(a的随机一个字元移到b尾部)

例子2:
a,b= ['apple,'banana','car'],['dog','egg','fun']
move(a.b)
print(a,b)

输出可以是:
['banana','car'] ['dog','egg','fun','apple']
(a的一个元素移到b列表尾部)

我写的代码:(并不能达到标题的要求)
import random
def move(a,b)
        rand = int(random.random()*len(a))
      b += a   
        del a

但是我发现(以例子2为例)当a和b的类型是列表时 .
a的类型是并不是列表,
于是导致了 b += a最后的结果是
['dog','egg','fun','a','p','p','l','e']

我也曾想过使用pop()方法但这一方法却又不兼容str类型
难道就没有一个能同时兼容字符串和列表的方法么{:10_266:}

12345ab 发表于 2022-6-15 16:38:56

希望我有将我的意思表达清楚{:10_245:}

hrpzcf 发表于 2022-6-15 17:10:13

你确定你的函数能实现例子1的结果?

hrpzcf 发表于 2022-6-15 17:16:21

import random

def move(a, b):
    b.append(a.pop(random.randint(0,len(a)-1)))

# 仅限 ab 都是列表
a,b= ['apple', 'banana','car'],['dog','egg','fun']
move(a, b)
print(a,b)

wp231957 发表于 2022-6-15 17:17:51

hrpzcf 发表于 2022-6-15 17:16


它的意思是用一个函数可以实现任意类型的

hrpzcf 发表于 2022-6-15 17:50:02

wp231957 发表于 2022-6-15 17:17
它的意思是用一个函数可以实现任意类型的

那只能给函数加返回值了,要是a, b类型不同的的话那就更复杂了

傻眼貓咪 发表于 2022-6-15 22:50:32

不符合逻辑,比如 tuple 类型是不可改类型(只能换新对象)但都是可迭代。

Python 虽然很多很简化操作方法,但由于太简化,导致一些代码想自行更改其构造或者自定义构造反而变得非常困难。C++ 的重载或 C 的空指针完美解决这种问题。

12345ab 发表于 2022-6-16 17:18:01

傻眼貓咪 发表于 2022-6-15 22:50
不符合逻辑,比如 tuple 类型是不可改类型(只能换新对象)但都是可迭代。

Python 虽然很多很简化操作方 ...

感谢指正 我当时忽略了元组字典这些类型了{:10_264:}
准确来说只需要兼容列表和字符串就行了

wp231957 发表于 2022-6-16 17:26:26

12345ab 发表于 2022-6-16 17:18
感谢指正 我当时忽略了元组字典这些类型了
准确来说只需要兼容列表和字符串就行了

用type探测类型,然后建立两个分支

12345ab 发表于 2022-6-16 17:30:03

wp231957 发表于 2022-6-16 17:26
用type探测类型,然后建立两个分支

好主意

傻眼貓咪 发表于 2022-6-16 17:37:41

12345ab 发表于 2022-6-16 17:18
感谢指正 我当时忽略了元组字典这些类型了
准确来说只需要兼容列表和字符串就行了

from random import randint

def foo(A, B):
    n = randint(0, len(A) - 1)
    if type(A) == str:
      X = ''.join()
      Y = B + A
      return X, Y
    B += ]
    A.pop(n)
    return A, B

a = "banana"
b = "flower"
a, b = foo(a, b)
print(a, b)

# -------------------

c = ['a', 'b', 'c']
d =
c, d = foo(c, d)
print(c, d)
banna flowera
['b', 'c']

12345ab 发表于 2022-6-16 18:02:06

傻眼貓咪 发表于 2022-6-16 17:37


十分感谢
你这比我写的那段简洁多了{:10_264:}
页: [1]
查看完整版本: 随机将一字符串/列表的元素移到另一对象中后